texttext 发表于 2022-11-20 06:08:19

z = (x==1) && (y=2)中的y会被赋值吗?


int x=0, y=0, z=0;
z = (x==1) && (y=2);
打印xyz, 结果都是0, y不该是2吗?

wp231957 发表于 2022-11-20 07:43:56

x==1为假,&&后面的就被编译器优化没了

homeskating 发表于 2022-11-20 10:35:46

#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类型所以无法赋值生效

jhq999 发表于 2022-11-20 10:38:56

逻辑短路

texttext 发表于 2022-11-20 11:07:53

楼上几位太厉害了! 多谢!
页: [1]
查看完整版本: z = (x==1) && (y=2)中的y会被赋值吗?