在c语言中,对于布尔类型,true等于1,false等于0吗?

48 浏览
0 Comments

在c语言中,对于布尔类型,true等于1,false等于0吗?

只是想澄清一下,我找到了类似的答案,但是针对的是C++,我对编码还比较新,所以不确定它是否也适用于C。

0
0 Comments

在C语言中,truefalse的标准定义分别是1和0。这是根据C语言规范(版本未指明)中的定义。在不同版本的C语言中,或者在非标准的定义中,truefalse的定义可能会有所不同。

C语言中的一个奇怪之处是,true是一个int类型,而不是bool类型。在C99标准中,引入了_Bool<stdbool.h>,它们是C语言中的关键字和头文件,用于定义bool类型。在C99和C11标准中,bool_Bool的一个typedef,true是一个宏,展开为int类型的1

关于true的类型,C11标准中使用了"integer constant 1"这个术语。根据标准的定义,它可以是int类型,也可以是unsigned或其他整数类型。具体的类型定义可以参考C11标准中的6.4.4.1节。

总结起来,在C语言中,true的定义是1,它的类型可以是int或其他整数类型,具体取决于所使用的C语言版本和标准的定义。如果你想了解特定版本C语言中true的定义,请查阅相应的C语言标准文档。

以上就是关于C语言中true == 1false == 0这个问题的原因和解决方法的整理。希望对你有所帮助!

0
0 Comments

在C语言中,任何不是0的值都被视为true。所以1是true,但2、3等也是true。这个问题似乎是指特定的实体:bool类型的true和false,而不是一般的使if语句执行true分支的值。

在C语言中,true是在头文件中定义的宏,其值是1(类型为int)。另一方面,任何非零值在用作条件时都被视为true。这就是为什么像if (b == true)这样的写法是危险的;应该直接写成if (b)。

这也是为什么我认为bool类型只适用于设置值,而不适用于测试。对于测试来说,在C语言中已经内建了条件判断的功能,没有任何正式的定义。我甚至可以进一步说:bool类型完全无用,除非可能需要与那些将true定义为-1的语言进行区分,但同样的规则适用:0为false,其他任何值为true。

更准确地说,任何与0相等的值都被视为false。空指针可能不是0,但与0相等,所以在if(null_pointer)中会被视为false。

这个答案帮助我理解了:0和'odd' Out[]: 0 :::: 1和'odd' Out[]: 'odd'

因此,从上述内容可以得出结论:在C语言中,true等于1,false等于0。这是因为在C语言中,非零值被视为true,而0被视为false。为了避免混淆,应该直接使用非零值作为条件判断,而不是使用true或false。

0