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++*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覆盖