根据优先级表,一元后缀递增和递减运算符比关系运算符具有更高的优先级,那么为什么在这样的表达式中 (x++ >=10) 关系运算符先求值然后变量递增?
最佳答案
运算符不会首先被评估。顺序是:
- 计算LHS (
x++
) - 结果是x
的原始值,然后x
递增 - 计算 RHS (
10
) - 结果为 10 - 比较 LHS 和 RHS 的结果
下面是演示的代码:
public class Test {
static int x = 9;
public static void main(String[] args) {
boolean result = x++ >= showXAndReturn10();
System.out.println(result); // False
}
private static int showXAndReturn10() {
System.out.println(x); // 10
return 10;
}
}
打印出 10
然后是 false
,因为在评估 RHS 时 x
已经 递增... 但 >=
运算符仍在计算 9 >= 10
作为表达式 x++
的结果是 original x
的值,不是递增的值。
如果您希望结果在递增后,请改用++x
。
关于java - Java 中的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029058/