java int b=0 ; b=b+b++; System.out.println(b) 为什么输出结果是0 求大神解答
答案:3 悬赏:60
解决时间 2021-01-26 11:15
- 提问者网友:山高云阔
- 2021-01-25 20:48
java int b=0 ; b=b+b++; System.out.println(b) 为什么输出结果是0 求大神解答
最佳答案
- 二级知识专家网友:长青诗
- 2021-01-25 21:07
b = 0在 b = b + b++ 的时候 虽然有了b++
但是此时它并未被更新成++后的结果。 当这样一行代码运算完了 b就变成了1.
如果你写 b = b + (++b)就会输出1 原因是 ++b 在运算中 是先将b + 1 然后再运算的。追答
追问:不过要是这样的话b=b+(++b)是应该先运算++b吧? 这个时候b的值不应该等于1么? 那么最后的结果为什么不是 b=1+1 而是 b=0+1呢?
追答:++b 或者 b++ 本身也是一个运算, 不同的是 ++b 先+ 再参与其他运算b++ 先参与其他运算再+
b = b + (++b)从左到右开始运算 b(=0) + b(运算后为1) = 0 + 1;
int b = 0;
b = ++b + b;
这样就是2
追问:明白了万分感谢。
但是此时它并未被更新成++后的结果。 当这样一行代码运算完了 b就变成了1.
如果你写 b = b + (++b)就会输出1 原因是 ++b 在运算中 是先将b + 1 然后再运算的。追答
追问:不过要是这样的话b=b+(++b)是应该先运算++b吧? 这个时候b的值不应该等于1么? 那么最后的结果为什么不是 b=1+1 而是 b=0+1呢?
追答:++b 或者 b++ 本身也是一个运算, 不同的是 ++b 先+ 再参与其他运算b++ 先参与其他运算再+
b = b + (++b)从左到右开始运算 b(=0) + b(运算后为1) = 0 + 1;
int b = 0;
b = ++b + b;
这样就是2
追问:明白了万分感谢。
全部回答
- 1楼网友:罪歌
- 2021-01-25 23:42
是0,因为b++的运算顺序是先把b的值给b++,然后b自己加1,所以整个表达式在那一时刻的实际值:b=0+0;你说不是0是多少
追问:不过最后b++这个操作在什么时候执行啊?整体的顺序是先 b=0+0 这个时候执行b++ b=1最后再因为 b=0+0新的0的值把旧的1的值覆盖了么最后b=0是吗?
追答:是的,最后被覆盖了,本来b是1的
追问:不过最后b++这个操作在什么时候执行啊?整体的顺序是先 b=0+0 这个时候执行b++ b=1最后再因为 b=0+0新的0的值把旧的1的值覆盖了么最后b=0是吗?
追答:是的,最后被覆盖了,本来b是1的
- 2楼网友:想偏头吻你
- 2021-01-25 22:40
b++的含义是,在表达式中如果存在b++那么先执行表达式的内容,然后执行b=b+1;
所以你上面两个都是先执行表达式的内容,此时b=0,所以结果为0。
而如果你换成++b的话,就是在表达式中先执行b=b+1.
追问:那为什么b=b+(b++)的时候加了括号 这个时候为什么没有改变表达式的计算顺序啊?
追答:=号后面的都是表达式啊
所以你上面两个都是先执行表达式的内容,此时b=0,所以结果为0。
而如果你换成++b的话,就是在表达式中先执行b=b+1.
追问:那为什么b=b+(b++)的时候加了括号 这个时候为什么没有改变表达式的计算顺序啊?
追答:=号后面的都是表达式啊
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯