java 由于运算符优先级,输出不是预期的结果

6l7fqoea  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(106)
int a = 6;
int b = 5;

System.out.print(a *= a++ - (a++) * b);

结果-174
我认为(a++)-〉6,按照运算顺序,7 -(6)* 5 =〉-23,那么a现在应该是8。所以我认为是8 *= -23 =〉-184。
请一步一步地帮助我,这是错误的,我误解了。
谢谢

zbwhf8kr

zbwhf8kr1#

根据Java语言规范第15.7.1节,
二元运算符的左操作数似乎在右操作数的任何部分计算之前完全计算。
所以在你的例子中,没有括号的a++(a++) * b之前计算,这使得赋值的右边等于6 - 7 * 5,也就是等于-29a乘以-29得到-174

相关问题