【发布时间】:2012-09-18 01:42:27
【问题描述】:
我知道我可以像这样使用逗号运算符
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 设置?
【问题讨论】:
-
“或混淆我的同事”。大多数人试图让他们的代码更具可读性,而不是更少。
-
它的语法不正确,你为什么要混淆你的同事?无需额外的混淆工作,该代码将很快成为遗留代码。
-
混淆只是为了好玩,当然,不要用在严肃的代码中。编译器说“赋值的左边必须是变量”
-
别这样,可读性被搞砸了。
标签: java for-loop variable-assignment assignment-operator comma-operator