joe1 发表于 2021-4-28 21:01:55

输出的值为什么是1啊,谢谢

#include<stdio.h>

main()
{
        int a=3,b=3,y=2,x=1;
        printf("%d",(a=1)&&(x=b>a));
}

ba21 发表于 2021-4-28 21:21:21

看看这个就懂了

#include<stdio.h>

main()
{
      int a=3,b=3,y=2,x=1;
      printf("%d, %d, %d\n",a==b, a<b, b>a );
}

肖-肖 发表于 2021-4-28 22:10:14

wp231957 发表于 2021-4-29 07:41:33

int a=3,b=3,y=2,x=1;
      printf("%d",(a=1)&&(x=b>a));
首先这是一个逻辑运算,其结果非0即1
其次并运算要求全真才是真
好,我们来看左端a=1这是一个真值
右侧,b>a 这又是一个逻辑运算3>1是真
所以右端x=1为真所以整个表达式为真

joe1 发表于 2021-5-1 15:08:54

wp231957 发表于 2021-4-29 07:41
int a=3,b=3,y=2,x=1;
      printf("%d",(a=1)&&(x=b>a));
首先这是一个逻辑运算,其结果非0即1


意思就是(a=1)&& (x=b>a)的a=1就是已经赋值了吗?

joe1 发表于 2021-5-1 15:10:38

肖-肖 发表于 2021-4-28 22:10


你的帖子下面有一个帖子.意思是上面第二行有个a=1已经把a赋值为1了.谢谢啊

肖-肖 发表于 2021-5-1 15:14:52

joe1 发表于 2021-5-1 15:10
你的帖子下面有一个帖子.意思是上面第二行有个a=1已经把a赋值为1了.谢谢啊

嗯 好的 明白了
页: [1]
查看完整版本: 输出的值为什么是1啊,谢谢