狂想曲丶 发表于 2020-11-16 12:30:39

循环结构

以下程序的输出结果是______。
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A、1
B、0
C、非0的数
D、-1


!c的结果一定为1吗?还是为非0的数?如果!c为非0的数那么答案是不是C?

风过无痕1989 发表于 2020-11-16 13:00:14

程序运行后状态如下:
!a        false                bool
!b        false                          bool
!c        true                          bool
!a && !b        false                bool
!a && !b || !c        true          bool
true        true                          bool

由此可见:!c 的结果是 非 0 ,而输出时的 d 为整型(%d),故输出 1

狂想曲丶 发表于 2020-11-16 16:33:30

风过无痕1989 发表于 2020-11-16 13:00
程序运行后状态如下:
!a        false                bool
!b        false                          bool


非0的输出结果不应该是任意非0的数吗,为什么按%d输出结果就是1

风过无痕1989 发表于 2020-11-16 16:36:28

狂想曲丶 发表于 2020-11-16 16:33
非0的输出结果不应该是任意非0的数吗,为什么按%d输出结果就是1

系统自动转化为布尔类型,而布尔类型就只有 0 和 1
页: [1]
查看完整版本: 循环结构