天天看点

c语言逗号表达式(C语言逗号表达式可以出现自身吗)

C语言中逗号表达式的问题

逗号表达式的运算级最低,比赋值运算符级别还低。

所以 y=(x=a+b),(b+c);

先算x=a+b=6,再y=x=6;而后面的b+c不影响x和y的值。

所以最终x,y的值都是6.

只不过 y=(x=a+b),(b+c);这整个式子的值是b+c=10而已。

如果是y=((x=a+b),(b+c)); 那么才结果是x=6,y=b+c=10y=(x=a+b),(b+c);

包括一个赋值表达式,和一个算术表达式,y的值是6,整个表达式的值为10.

也就是说 y=((x=a+b),(b+c));时 y的值为10.

自己再试下咯。在c/c++中逗号表达式的运算结果是逗号之前的部分,逗号后面的你可以理解顺便做的工作

在你的代码中

y=(x=a+b),(b+c);

这一句中,运算顺序

(1).x=a+b得到x=6

(2)b+c

(3)y=x=a+b=6

所以结果自然就是y和x都等于6了如果是((x=a+b),(b+c))实际上可以看成(6,10)整个逗号表达式的值应该是10

但这是错的,这儿还有赋值运算符。赋值运算符的优先级是14,而逗号表达式的优先级是15,也就是说上面的表达式中 y=(x=a+b),(b+c);应该等价于这样的结合:y=x,10;如果这样写的话,则答案很清晰,为:6

C语言逗号表达式计算