俺翠鸟,c语言问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 02:25:49
假设b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a=8。对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
a2=++b,c--,d+3;
为什么a2=3?
最终表达式的值虽然为怎么又为8?

,表达式运算规则是从左到右,所以你上面两个式子应该都是一样的,先执行,++b,接着是c--,接着是d+3,a1和a2 的值都是由最后一个式子d+3决定的,为8

最终表达式的值没用到,但仍是8。如果用一下就明白了:
x = (a2=++b,c--,d+3);
此时x为8

a2=++b,c--,d+3;
这是一个逗号表达式,这个表达式的值是8。但a2=++b,这个赋值表达式把a2变成了3。

赋值运算符的优先级高于逗号运算符当然a2=++b;