C语言的....

来源:百度知道 编辑:UC知道 时间:2024/06/06 10:31:54
C的
a=5
a=2+(a+=a++,a+8,++a)
最终a等于多少啊
给出原因啊
我就是在13,14中徘徊...

用VC调试的结果为14
分析原因:
1、逗号表达式只取最后一个值, ()的顺序是从左到右。如:
a=(b,c,d);
先执行b,再执行c,然后执行d
最后a的值为d.
2.题目中(a+=a++,a+8,++a),先执行a+=a++,++的优先级大于+,等价于a=a+(a++),执行完毕后a的值为11;再执行a+8,完后a的值任然为11;最后执行++a,完后a=12。最后a=2+12=14.

a=14;
(a+=a++,a+8,++a)执行顺序从左到右,但是()表达式值只取++a;
a+=a++ 得(a+=5)++,得a=11,而后a++得a=12;
于是最后结果为2+12=14;

首先 (a+=a++,a+8,++a) 是一个逗号表达式
因为赋值运算符的优先级高于逗号运算符
应该先求解 a+=a++
注意: (a++)为5 但下一步 a+=(a++) 此时 a=6
所以得出 a=11
再求解逗号表达式的最后一项 ++a 得出 a=12
最后计算 得出 a=14