这里的y在中间不会被赋值吗

问题遇到的现象和发生背景 这里的y在中间不会被赋值吗?

以下代码的输出是
int x=0, y=0, z=0;
z = (x==1) && (y=2);
printf("%d ", y);
结果为0

用代码块功能插入代码,请勿粘贴截图

当判断(x == 1)的时候已经知道&&的结果为0了就没执行后面的y = 2
你可以试下改成z = (x==0) && (y=2);
这个时候y就赋值成2了

不会
因为z=(x==1)&&(y=2)中是并集运算;
所以当运行x==1时是错误的,直接把0赋给了z,后面的y=2就不会运算;
你可以试下x==0,就知道差别了