z = (x==1) && (y=2)中的y会被赋值吗?
int x=0, y=0, z=0;
z = (x==1) && (y=2);
打印xyz, 结果都是0, y不该是2吗? x==1为假,&&后面的就被编译器优化没了 #include<stdio.h>
/*
我们用代码试下就知道是否会赋值了
*/
int main(void) {
int x = 0, y = 0, z = 0;
z = (x == 1) && (y = 2);
printf("x=%d\ny=%d\nz=%d\n",x,y,z);
}
x==1为假,即为false但是由于z为int类型所以无法赋值生效 逻辑短路 楼上几位太厉害了! 多谢!
页:
[1]