java后增量和运算符优先级

zz2j4svz  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(311)

这个问题在这里已经有答案了

java中的求值顺序规则是什么(5个答案)
增量后(i++)和增量前(++i)操作符在java中是如何工作的(14个答案)
上个月关门了。
我对这个代码有点困惑:

int r = 7;
boolean result1 = r == r++; //
boolean result2 = r++ == r; //

System.out.println(result1);
System.out.println(result2);

我认为两者都是对的,但是result1是对的,result2是错的。
oracle教程并没有真正的帮助,在java语言规范中我也没有找到任何答案。到目前为止,我还不明白,后置递增运算符如何具有最高的运算符优先级。

ru9i0ody

ru9i0ody1#

java逐个计算表达式。
当它评估 r++ 结果是 7 ,但副作用会立即产生,所以当 r ,结果是的新值 r ( 8 ).
这就是为什么在复杂表达式中不应使用递增/递减表达式的原因。

ttisahbt

ttisahbt2#

第一个检查两个r,最后增加r。你知道,因为它的r++在表达式被求值后,它会增加一个数,这意味着在这个表达式中的求值是7==7,在它完成它的8之后,它不会检查,因为它已经被求值了。

相关问题