java中的自增的一个奇怪的现象

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:17:26
int b = 2;
b = b++*3;
打印b

b=b++*3 应该等价于
b=b*3;
b=b+1;
所以在C中,打印b的结果是7

但是在java中打印的结果是6,为什么呢?
不是
int b=2;
不是System.out.println(b++*3);这个显然会打印6,但是
我的完整的程序是:
int b = 2;
b = b++*3;
System.out.println(b);

++b是先+
b++是后加
int b = 2;
b = b++*3;计算过程如下
1)b*3 此时b 为2
2)b++ 此时b为3
3)b = b++*3;把2*3的值赋给b
要知道优先级,赋值运算始终是最后进行的。

java中如此处理
result = b*3
b = b+1
b=result

请参考我的答案,Java处理赋值是在最后的,一开始先把Result算出来是6然后做自加,最后把6给b

因为b++本来应该是3 但是被你的赋值语句覆盖了

6 ? 9吧

b++被b=2*3覆盖