猿问

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

C语言中++运算级高于=运算级,所以运行b=a++程序时,些计算a++,得到a=3,然后将a=3赋值给b,得到b=3。但运行程序却得到b=2。哪位好心人给解释一下。

回首忆惘然
浏览 505回答 4
4回答

慕斯王

把++当成个函数,下面是这2个函数的伪代码a++:value = a;a = a + 1;return value; ++a:a = a + 1;return  a; 理解了吗,优先级还是一样的。一定要了解接口的实现,也就是处理逻辑。b得到的是函数返回的return值,只是函数执行后a的值改变了。

慕村9548890

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

aluckdog

a=2;之后a++这个表达式的值是2,然后把表达式的值给了b,而a变成了3,b取的是表达式的值,并不矛盾而且在很多资料中,运算符优先级比较是特别表明前置 Pre-increment 的
随时随地看视频慕课网APP
我要回答