这个问题在这里已经有答案了:
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语言规范中我也没有找到任何答案。到目前为止,我还不明白,后置递增运算符如何具有最高的运算符优先级。
2条答案
按热度按时间ru9i0ody1#
java逐个计算表达式。
当它评估
r++
结果是7
,但副作用会立即产生,所以当r
,结果是的新值r
(8
).这就是为什么在复杂表达式中不应使用递增/递减表达式的原因。
ttisahbt2#
第一个检查两个r,最后增加r。你知道,因为它的r++在表达式被求值后,它会增加一个数,这意味着在这个表达式中的求值是7==7,在它完成它的8之后,它不会检查,因为它已经被求值了。