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。请一步一步地帮助我,这是错误的,我误解了。谢谢
zbwhf8kr1#
根据Java语言规范第15.7.1节,二元运算符的左操作数似乎在右操作数的任何部分计算之前完全计算。所以在你的例子中,没有括号的a++在(a++) * b之前计算,这使得赋值的右边等于6 - 7 * 5,也就是等于-29,a乘以-29得到-174。
a++
(a++) * b
6 - 7 * 5
-29
a
-174
1条答案
按热度按时间zbwhf8kr1#
根据Java语言规范第15.7.1节,
二元运算符的左操作数似乎在右操作数的任何部分计算之前完全计算。
所以在你的例子中,没有括号的
a++
在(a++) * b
之前计算,这使得赋值的右边等于6 - 7 * 5
,也就是等于-29
,a
乘以-29
得到-174
。