以下代码的输出是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,就知道差别了