捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >扩展阅读 > 正文
18 2018.02

为什么 C99 新增加的布尔类型叫 _Bool,而不是 bool 或 BOOL?

点击次数:1691 更新时间:2018/2/18 16:39:56  【打印此页

为什么 C99 新增加的布尔类型叫 _Bool,而不是 bool BOOL



大家可能会觉着奇怪,为啥这个类型长得跟别人不一样呢?

 

在 C99 的标准中我也没查到相关的说明,所以下边是我个人的推测。

由于编程中经常会出现要么“yes”要么“no”的判断,所以布尔类型就显得非常重要。但最开始的 ANSI C 标准并没有布尔类型,因此大家就会想方设法地自己发明布尔类型。一般的做法无非就是通过宏,自己定义一个布尔类型:
 

#define BOOL int


或者
 

#define bool int


如果 C99 新增的布尔类型叫 bool 或 BOOL,则很可能跟大家已有的代码发生冲突(即真正的布尔类型被大家自定义的给覆盖了)。我举个例子,正常情况下,_Bool 打印的长度应该是 1,但如果我对它进行宏定义(#define _Bool int),则打印出来的长度就变成了 int 的长度了:
 

#include <stdio.h>

#define _Bool int

int main()
{
        printf("_Bool's length is %d\n", sizeof(_Bool));
        return 0;
}


执行后的结果是:
 

_Bool's length is 4


因此,C99 新增加的布尔类型的时候,决定将其命名为内部类型(即下横线开头),这样发生冲突的可能性就很低了(我们不推荐用户使用下横线开头的标识符,还记得吗?)


一定要使用 bool 怎么办?

好,就算小甲鱼你说的有一定的道理,我姑且相信你了!

但我是处女座,我就要使用 bool 来声明布尔类型的变量,你有办法吗?

 

答案是有嘚!

C99 除了新加入了布尔类型,还加入了一个标准头文件:<stdbool.h>

这个头文件内容比较简单,就定义了四个宏:
 

#define bool        _Bool
#define true        1
#define false        0
#define __bool_true_false_are_defined        1

所以,如果你希望代码中可以使用 bool 来定义布尔类型的变量,导入该头文件即可:

小甲鱼温馨提示:代码看不懂不要紧,因为有些知识咱还没教@_@

#include <stdio.h>
#include <stdbool.h>

#define NUM 99

int main()
{
        bool isOdd;

        if (NUM % 2)
                isOdd = true;
        else
                isOdd = false;

        if (isOdd)
                printf("%d是奇数!\n", NUM);
        else
                printf("%d不是奇数!\n", NUM);

        return 0;
}


执行后的结果是:

99是奇数!

 

Tips
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1691 更新时间:2018/2/18 16:39:56  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修
欢迎您,来自IP为:3.231.226.13 的朋友!您是第960622位访客; 其中 电脑访客746272位,手机访客214350位.当前在线人数1849位.最高记录是 1940