Java中的运算符优先级不符合Java规范
import java.util.*;
class OperatorPrecedenceExp
{
public static void main(String[] args)
{
int e=10;
sum=++e+e--;//e-- should b evaluated first
System.out.println("sum="+sum);
}
}
上面的代码打印sum=22
。但是根据Java规范e--
应该在++e
之前进行评估。所以结果应该是sum=20
,而不是sum=22
# 1 楼答案
当你说,
e
应该首先评估你一定是错了。首先
e
直到下一个语句(即post-decrement中的post)才改变e
。接下来,如果您将代码更改为您将看到,第一个
e
是预先递增的,然后添加到一个预先递减的e
(按该顺序),因为总和是你的预期结果(20)可以通过
或者
我希望这能有所帮助
编辑
根据你的Java Tutorials link
你不能只是浏览一下桌子