gpt4 book ai didi

c - 使用枚举时,C 编译器如何将 false 理解为 false,将 true 理解为 true?

转载 作者:行者123 更新时间:2023-11-30 16:28:09 24 4
gpt4 key购买 nike

如果变量的返回值为 0,C 编译器如何将 isOn 理解为 false?

enum bool { false, true };

typedef enum bool boolean;

int main()
{
boolean isOn = false;
printf("%d\n", isOn);
if(!isOn)
printf("IS FALSE");
return 0;
}

C 是否将 0 理解为 null,并将所有其他数字理解为非 null?

最佳答案

在 C 语言中,整数值 0 在 boolean 上下文中使用时被视为 false,而任何非零值在 boolean 上下文中都被视为 true。

enum 的值从 0 开始,如果没有专门设置,则会增加,因此对于您创建的枚举,false 的值为 0,而 >true 的值为 1。

在语句 if (!isOn) 中,! 运算符更改给定表达式的 boolean 值,!0 为 1以及给定的任何其他值为0。由于 isOn 的值为 0,!isOn 的值为 1,因此 if 语句为 true,并且 "IS FALSE" 被打印。

关于c - 使用枚举时,C 编译器如何将 false 理解为 false,将 true 理解为 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com