C语言最初没有布尔类型,直到1999年的版本(C99)才被添加。在此之前,C++已经标准化(1998年)使用了类型bool和关键字false和true。为了将C语言中的布尔类型与C++中的类型分开,并防止新名称破坏旧的C代码,它被命名为_Bool。
之所以用下划线加大写字母命名,是因为7.1.3保证这样的标识符在编译器、库或用户代码中不存在:
以下划线开头,后面紧跟一个大写字母或另一个下划线的所有标识符都被保留,无论出于何种目的。
"保留,无论出于何种目的"意味着为C语言的未来版本保留。因此,自C99以来添加到语言中的所有新的语言关键字都用下划线加第一个字母大写的方式命名。C99中的其他示例包括类型_Complex和_Imaginary。
对于想要与C++代码兼容的情况,创建了头文件
但是请注意,布尔类型并没有像在C++中那样完全集成到C语言中。在C++中,例如a == b这样的表达式给出了一个类型为bool的结果,其值为true或false。而在C中,它给出了一个类型为int的结果,其值为1或0。这是为了与旧的C代码保持向后兼容性。