c – 在C99中需要_Bool吗?
发布时间:2020-12-16 10:34:09 所属栏目:百科 来源:网络整理
导读:我正在读一本关于C的书. 它说C99添加了一个数据类型_Bool. 它基本上是一个int但只存储0或1. 现在我不明白为什么需要这样的数据类型. 我们已经有bool隐式转换为int,反之亦然. 那么请有人告诉我这种数据类型有用的情况. PS:C似乎不支持如here所见的数据类型.
我正在读一本关于C的书.
它说C99添加了一个数据类型_Bool. 它基本上是一个int但只存储0或1. 现在我不明白为什么需要这样的数据类型. 我们已经有bool隐式转换为int,反之亦然. 那么请有人告诉我这种数据类型有用的情况. PS:C似乎不支持如here所见的数据类型. #include <iostream> using namespace std; int main() { // your code goes here _Bool b = false; if(b == 0) printf("FALSE"); else printf("TRUE"); return 0; } 解决方法
不,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中是普遍存在的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |