Java – 用于循环声明的逗号运算符
我知道我可以像这样使用逗号运算符
for (int i = 1, j = 15; j>10; i++, j--) { // do something neat }
但是有些文章似乎暗示逗号运算符可以在for循环声明之外使用,例如
int j = 2, k = 4 ; int x ; // Assignment statement with comma operator x = j + 1, k ;
来源: http : //www.cs.umd.edu/~clin/MoreJava/ControlFlow/comma.html
要么
int x = (expression) ? (i++,2) : 3;
来源: https : //stackoverflow.com/a/12047433/1084813
这对于代码混淆竞赛或混淆我的同事来说是一个巧妙的技巧,但两个示例都不会编译(Java 1.6,Eclipse Juno),错误是“赋值的左侧必须是变量”。 我试着查看编译器设置,看看是否可以禁止防止错误的代码,但没有运气。
怎么了? 逗号运算符是旧规范的一部分,后来又改变了吗? 使用不同Java设置编写这些示例的人是否允许这样做?
怎么了?
在C中工作的一些技巧在Java中不起作用。
逗号运算符是旧规范的一部分,后来又改变了吗?
这在Java AFAIK中从未奏效。
使用不同Java设置编写这些示例的人是否允许这样做?
假设Java的常见错误就像C或C ++一样,因为它类似。 SO上编码错误的很大一部分原因是人们试图用Java编写C ++,并且当它没有达到他们期望的效果时会感到困惑。
顺便说一句:我犯了同样的错误,假设C ++和Java一样,因为我对C ++的了解不是最新的。
然而,一些工作Java但但也许不是C的技巧。
您可以使用所有货币符号,也可以使用几个看起来最相符的货币符号。
例如
if( ⁀ ‿ ⁀ == ⁀ ⁔ ⁀ || ¢ + ¢== ₡)
您可以使用不可见的字符和c,在打印时可以反转其余部分的顺序。 ;)
该程序编译并运行并打印您可以在Java标识符中使用的所有奇数字符
for (char ch = 0; ch < Character.MAX_VALUE; ch++) if (Character.isJavaIdentifierPart(ch) && !Character.isJavaIdentifierStart(ch)) System.out.printf("%04x <%s>%n", (int) ch, "" + ch);
这让它变得非常简单。
http://vanillajava.blogspot.co.uk/2012/08/uses-for-special-characters-in-java-code.html
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.27
15.27。 表达
<...>
与C和C ++不同,Java编程语言没有逗号运算符。