C语言问题 为什么a=(b=3,b+5,b++);的结果是3 而a=(b=2,++b,b+5);的结果是8?

a=(b=3,b+5,b++);的结果是3 而a=(b=2,++b,b+5);的结果是8?
请说明下具体过程 谢谢

逗号表达式中最后一个子表达式的值作为整个表达式的值被返回。
所以第一个表达式可以等价为下面的表达式序列:
b=3;
b+5;
a=(b++);
执行到第三个子表达式的时候,整个表达式的执行过程是:a=b;b=b+1;所以很显然,a=3。

对于第二个表达式,可以同样的分析。
等价的表达式序列为:
b=2;
b=b+1;
a=(b+5);
执行了前两个表达式b的值为3,那么执行第三个表达式的时候就会得到a=8。
温馨提示:答案为网友推荐,仅供参考
相似回答