Joh*_*Eye 7 java for-loop variable-assignment comma-operator assignment-operator
我知道我可以像这样使用逗号运算符
for (int i = 1, j = 15; j>10; i++, j--) {
// do something neat
}
Run Code Online (Sandbox Code Playgroud)
但是有些文章似乎暗示逗号运算符可以在for循环声明之外使用,例如
int j = 2, k = 4 ;
int x ;
// Assignment statement with comma operator
x = j + 1, k ;
Run Code Online (Sandbox Code Playgroud)
来源:http://www.cs.umd.edu/~clin/MoreJava/ControlFlow/comma.html
要么
int x = (expression) ? (i++,2) : 3;
Run Code Online (Sandbox Code Playgroud)
来源:https://stackoverflow.com/a/12047433/1084813
对于代码混淆竞赛来说这将是一个巧妙的技巧或混淆我的同事,但两个示例都不会编译(Java 1.6,Eclipse Juno),错误是"赋值的左侧必须是变量".我试着查看编译器设置,看看是否可以禁止防止错误的代码,但没有运气.
怎么了?逗号运算符是旧规范的一部分,后来又改变了吗?使用不同Java设置编写这些示例的人是否允许这样做?
184*_*615 12
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.27
15.27.表达
<...>
与C和C++不同,Java编程语言没有逗号运算符.
怎么了?
在C中工作的一些技巧在Java中不起作用.
逗号运算符是旧规范的一部分,后来又改变了吗?
这在Java AFAIK中从未奏效.
使用不同Java设置编写这些示例的人是否允许这样做?
假设Java的常见错误就像C或C++一样,因为它类似.在SO上编写错误的很大一部分原因是人们试图用Java编写C++并且当它没有达到预期时会感到困惑.
顺便说一句:我犯了同样的错误,假设C++和Java一样,因为我对C++的了解不是最新的.
然而一些工作Java但但也许不是C.
您可以使用所有货币符号,也可以使用几个看起来最相符的货币符号.
例如
if( ? ? ? == ? ? ? || ¢ + ?== ?)
Run Code Online (Sandbox Code Playgroud)
您可以使用不可见的字符和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);
Run Code Online (Sandbox Code Playgroud)
这使得它几乎太容易了.
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