c语言一道选择题,这道题为什么选择bb是4,=号右边第一个b是4,第二个b也是4,用完后b才是5,可是这里的值还没变,所以答案应该是4+4,我觉得应该是8
b+=b++等同于b=(b+b)++,b=4,++在后面所以最后运算,所以b=4+4+1=9。追问
不对
不是的,解释是错的。你想如果先b++了,那么b就是5了,结果是10。
只能是b先和b对加后为8,此时的b为8,再自加1,为9啊。
等号的优先级非常低,即使是b++的优先级 ,也要比=高的。
请看教材
复合的赋值运算
所以b+=b++等同于b=b+b++
追答那就按教科书来吧,结果是9。
我运行了一下代码是9。你觉得是8应该是错的。
我也运行了,是9
但为什么呢。
追答........惊了。b=b+b++,那么b=4,可以看成b=4+4++。
由于+的运算优先级比++高,所以是b=(4+4)++,为9。
我是这么认为的,反正这个++不能省略,给b赋值必须最后运算,不能在++的前面运算。
。。。。惊了,++是自加,用完后值加1
追答一个意思嘛。。你用完值后+1,是不是4+4后已经用完了嘛,再加1,不是9嘛。
最简单的,int b=4; b=b++; b是不是等于5嘛。
这里b=8++;不是等于9嘛;
给你看看教材啊
你看看注意里的第二条
j=i++后,=号右边的j是5
错了,左边是5
追答我知道不能是b=8++;只是这里b+b=8和(b+b)++等值啊。
我把我的思路写一下,b=b+b++,进行完加法运算后值为8,这时候b已经用完了,自加符号还没进行,所以程序运行自加,你可以看成 b=8;b++;所以b的值为9。
我懂了!!!
谢谢大神!!!!
跪谢!
追答嘻嘻加油~~!
温馨提示:答案为网友推荐,仅供参考