C语言a = b++问题

本人初学C语言,知道a = b++是b先给a赋值,a再自增加一。但还是有这样一个疑问,根据C语言运算符优先级,++的优先级远大于=,为什么不先++再赋值呢?还有如果我把语句改成a = (b++),结果还是不变,()的优先级不是更高,不应该先算括号里面的么?求大神解释,谢谢!!!

实际上a=b++;可写为a=b;b=b+1;所以语句改成a = (b++)是没有任何区别。c语言规定后加,如果在表达式中,则一定是先完成表达式的计算,再进行自加。就是我们经常在教学中给学生讲的“先操作,在自加”,而前加则是“先自加,再操作”。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-08
“a = b++是b先给a赋值,a再自增加一”,不是“a再自增加一”,是b加一。
a = b++;等价于:
a=b;
b++;
即使用括号括起来,还是不变。这一条语句执行完了之后b才会加一。本回答被网友采纳
第2个回答  2014-12-08
个人理解 后++是整个运算结束后再加的
第3个回答  2014-12-08
在C语言中,=这个符号代表左右两边的,就想优先级一样,是从右到左运行的,a=b++的话,b++是先将b赋给a,而a=(b++),是先算b++,而b++还是先将b赋给a
相似回答
大家正在搜