表达式 (z=0, (x=2)||(z=1),z) 的值是1。
对吗?能不能解释一下这是什么意思?
下面是我的理解,供参考:
运行的结果应该是0,(z=0, (x=2)||(z=1),z)这是一个逗号表达式,它是从左到右依次计算各个表达式,而最终表达式的值为最后一个表达式的值,具体分析如下:
首先计算第一个表达式z=0,它给把z赋值为0;
然后计算第二个表达式(x=2)||(z=1),因为||为短路或运算符,即当检查到某个条件的值为真-即一个不等于0的值后,即停止往后判断条件,所以这里执行完x=2后,第一个条件已为真, 所以后面的z=1不继续执行;
接着计算第三个表达式,即一个z,无赋值等操作;
最后,返回整个逗号表达式的值,即最后一个表达式z的值-0,它在第一步计算中赋值为0,所以最后整个表达式的值为0.
测试代码如下:
参考链接:
#include <stdio.h>
int main(void){
int x,z;
int result = (z=0, (x=2)||(z=1),z);
printf("(z=0, (x=2)||(z=1),z)=%d\n",result);
printf("x=%d,z=%d\n",x,z);
return 0;
}