如果是
System.out.println(a++ +++a);
编译器似乎将其解释为
System.out.println((a++)++ +a);
这不起作用,因为前/后递增/递减表达式的结果是值,而不是变量. (也可能将其视为(a)但结果是相同的).
实际上,如果从命令行使用Oracle编译器编译它,则会出现以下错误:
UnaryOperatorTests.java:10: error: unexpected type
System.out.println(a++ +++a);
^
required: variable
found: value
1 error
与Eclipse编译器的消息相比,这更能说明发生了什么:
Invalid argument to operation ++/–
也就是说,您可以通过尝试从Eclipse获得相同的错误:
System.out.println(1++);
这样添加一个空间:
System.out.println(a++ + ++a);
似乎消除了混淆编译器的模糊性,并按照您的预期进行编译.