这不是一个表达式,是2条,
因为c语言中每个分号都代表一个表达式的结束。
上面可看成
x = y = 1;
z = x++, y++,++y;
运算符的优先级顺序问题。
赋值运算符 = 高于 ,运算符
所以执行z = x++;即z = x; x++;
表达式的值是最后一个表达式的值吗
这句话说的是逗号表达式,把(z = x++, y++, ++y)看成一个整体,整体是一个逗号表达式,整体的值是最后一个表达式的值,
你可以写printf("%d\n",(z = x++, y++, ++y));来测试逗号表达式的结果
我刚给别人写的运算符顺序表,你可以看看
[] () . -> ++(后自增) --(后自减) (type-name){}(复合常量运算符)
& * + - ~ ! sizeof ++(前自增) --(前自减)
( type-name )(强制类型转换)
* / %
+ -
<< >>
> < >= <=
!= ==
&
^
|
&&
||
? :
= *= /= %= += -= <<= >>= &= ˆ= |=
,
温馨提示:答案为网友推荐,仅供参考