小编典典

Java-循环声明之外的逗号运算符

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;

来源:http://codingdict.com/questions/144878

对于代码混淆竞赛或使我的同事困惑,这将是一个绝妙的技巧,但是两个示例都无法编译(Java 1.6,Eclipse
Juno),错误是“分配的左侧必须是变量”。我尝试查看编译器设置,以查看是否可以禁止它以防止错误代码,但没有运气。

怎么了?逗号运算符是旧规范的一部分吗?编写这些示例的人是否使用允许此操作的其他Java设置?


阅读 189

收藏
2020-11-16

共1个答案

小编典典

怎么了?

在C中起作用的一些技巧在Java中不起作用。

逗号运算符是旧规范的一部分吗?

这在Java AFAIK中从未起作用。

编写这些示例的人是否使用允许此操作的其他Java设置?

假定Java与C或C 类似,这是一个常见错误,因为它很相似。SO上的大部分编码错误是由于人们试图用Java编写C
而在它没有达到他们期望的目标时感到困惑。

顺便说一句:假设C 就像Java,因为我对C 的了解不是最新的,所以我犯了同样的错误。


但是有些技巧可以使Java正常工作,但可能不适用于C。

您可以使用所有货币符号,也可以使用一些看起来最多的货币符号。

例如

if( ⁀ ‿ ⁀ == ⁀ ⁔ ⁀ || ¢ + ¢== ₡)

您可以使用不可见的字符和c对,在打印时可以反转其余行的顺序。;)

该程序编译并运行并打印您可以在Java标识符中使用的所有奇数字符

for (char c‮h = 0; c‮h < Character.MAX_VALUE; c‮h++)
    if (Character.isJavaIdentifierPart(c‮h) && !Character.isJavaIdentifierStart(c‮h))
        System.out.printf("%04x <%s>%n", (int) c‮h, "" + c‮h);

这使得它太容易了。

http://vanillajava.blogspot.co.uk/2012/08/uses-for-special-characters-in-
java-code.html

http://vanillajava.blogspot.co.uk/2012/09/hidden-
code.html

2020-11-16