中易网

java int b=0 ; b=b+b++; System.out.println(b) 为什么输出结果是0 求大神解答

答案:3  悬赏:60  
解决时间 2021-01-26 11:15
java int b=0 ; b=b+b++; System.out.println(b) 为什么输出结果是0 求大神解答
最佳答案
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
追问:明白了万分感谢。
全部回答
是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++那么先执行表达式的内容,然后执行b=b+1;
所以你上面两个都是先执行表达式的内容,此时b=0,所以结果为0。
而如果你换成++b的话,就是在表达式中先执行b=b+1.
追问:那为什么b=b+(b++)的时候加了括号 这个时候为什么没有改变表达式的计算顺序啊?
追答:=号后面的都是表达式啊
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中介是干嘛的。
丛成都天回填到百花中心站怎么走
卫通4g通信手机充值卡安全吗?
核定存货资金定额的基本方法有哪些
冲浪者网吧怎么去啊,我要去那办事
“邂逅相遇, 适我愿兮”是什么意思?
关于普通6层住宅的排水,是首层单排吗
天然大理石价格高还是人造大理石价高
有间网吧地址好找么,我有些事要过去
学生扎什么马尾有气质 五款气质学生马尾欣赏
形容“妇女和小孩都知道”是什么成语?
女生暗示我表白她怎么搞
盗窃罪车辆的价值怎么算
房建地梁中KZL与L的区别
母亲今年59生日可以推迟过吗?
推荐资讯
2.96x40的简便运算用递等式
求一部小说名字,女主好像叫顾婷还是顾宁,她
请教阿芙香薰课堂里介绍的一款精油
美得理A800电子琴多轨怎么用?
韩国瘦身袜let'sslim怎么区分正反
154-括号乘以六等于106。这个公式怎么算?
300除以(1/6)用分数表
求推荐适合8、9岁孩子看的书?
求助卡基,为啥我显卡风扇一直在满速转
一道关于函数求值域的题求函数y=log2(x
20寸照片的长宽各是多少厘米?
环境检测公司资质要求
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?