为了账号安全,请及时绑定邮箱和手机立即绑定

C语言中++运算级高于=运算级,但为什么a=2;b=a++;所得b的值为2?

C语言中++运算级高于=运算级,但为什么a=2;b=a++;所得b的值为2?

回首忆惘然 2018-06-23 09:26:36
C语言中++运算级高于=运算级,所以运行b=a++程序时,些计算a++,得到a=3,然后将a=3赋值给b,得到b=3。但运行程序却得到b=2。哪位好心人给解释一下。
查看完整描述

4 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

把++当成个函数,下面是这2个函数的伪代码

a++:

value = a;

a = a + 1;

return value; 

++a:

a = a + 1;

return  a;

 

理解了吗,优先级还是一样的。一定要了解接口的实现,也就是处理逻辑。

b得到的是函数返回的return值,只是函数执行后a的值改变了。


查看完整回答
反对 回复 2018-07-13
?
慕村9548890

TA贡献1884条经验 获得超4个赞

a++先赋值后运算。   ++a是先运算再赋值

查看完整回答
反对 回复 2018-07-13
?
aluckdog

TA贡献1847条经验 获得超7个赞

a=2;之后a++这个表达式的值是2,然后把表达式的值给了b,而a变成了3,b取的是表达式的值,并不矛盾

而且在很多资料中,运算符优先级比较是特别表明前置 Pre-increment 的


查看完整回答
反对 回复 2018-07-13
  • 4 回答
  • 0 关注
  • 504 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信