我正在读一本关于C的书,上面说C99添加了一个数据类型_Bool。它基本上是一个int,但只存储0或1。现在我不明白为什么需要这样的数据类型。我们已经有了bool,它隐式地转换为int,反之亦然。那么,谁能告诉我这样的数据类型将是有用的情况。
PS: C++似乎不支持所见的这里那样的数据类型。
#include <iostream>
using namespace std;
int main() {
// your code goes here
_Bool b = false;
if(b == 0)
printf("FALSE");
else
printf("TRUE");
return 0;
}发布于 2014-01-29 03:04:52
它说C99添加了一个变量_Bool
不,C99添加了一个名为_Bool的内置类型,它的值可以是0或1。<stdbool.h>定义宏,其中bool扩展到_Bool,false扩展到0,true扩展到1。
另一方面,C++有一个名为bool的内置类型,它可以具有true和false的值。为了兼容性,C++11指定stdbool.h应该存在,但是是空的。(一些C编译器提供了C++的bool作为C99之前的扩展。)
添加C99的目的是提供与C++相同的功能,但以一种不使旧的C89代码失效的方式(在这种情况下,普通的bool作为名称可用)。在我看来,他们提出的宏解决方案并不理想,实际上,使用布尔类型的C代码仍然很少见,而它们在C++中却很普遍。
发布于 2014-05-24 08:38:12
C中的_Bool没有其他整数类型相同的语义。
例如,对于向整数的转换:
(_Bool) 0.5评估为1
鉴于
(int) 0.5计算结果为0。
(这是C99对_Bool类型的基本原理给出的示例)。
发布于 2014-01-29 02:47:26
我们已经有嘘声了
bool是_Bool的宏。这就是为什么我们有_Bool。(将其命名为bool将打破已经使用该名称的代码;_Bool不太可能与任何东西发生冲突。)
https://stackoverflow.com/questions/21421061
复制相似问题