一、什么是布尔类型
除了进行数值计算、文字信息处理,电脑也能完成逻辑判断之类任务,逻辑型也称为布尔型(bool),关系运算>、>=、!=等,它们的运算结果是bool型的,只有1(真)、0(假)。
C语言标准(C89)没有为布尔值单独设置一个类型,所以在判断真假时,使用整数 0 表示假,所有非0表示真。
二、宏定义
如果只使用数字来表示真假的话,不太直观,我们可以借助C语言的宏定义来处理一下:
#define BOOL int
#define TRUE 1
#define FALSE 0
拓展:其实也可以使用
typedef int BOOL;
来替换#define BOOL int
,不过他们之间还是有差别的:
1.与#define不同,typedef创建的符号名只受限于类型,不能用于值。
2.typedef由编译器解释,不是预处理器。
3.对指针操作不同。若使用#define给类型起别名的话是不可以连续定义的
例如,下面这两段代码,第一段代码中,定义b时不是char *类型了,而是char类型了,这样会报错的。而第二段代码中,定义b时也是char *类型#define String char * String a = "aaa", b = "bbb"; // 等价于 char *a = "aaa"; char b = "bbb" typedef char *String; String a = "aaa", b = "bbb"; // 等价于 char *a = "aaa"; char *b = "bbb"
总而言之就是:类型用typedef,常量用#define
三、C99新增
1.新增类型_Bool
C99 标准添加了类型
_Bool
,表示布尔值,即逻辑值true和false。但是,这个类型的值其实只是整数类型的别名,还是使用 0 表示false, 1 表示true,其它非0的值都会被存储为1。所以_Bool类型实际上也是一种整数类型。
2.头文件stdbool.h
C99还提供了一个头文件 stdbool.h,文件中定义了
bool
代表_Bool
,并且定义了 true 代表 1 、 false 代表 0 。只要加载这个头文件,就可以使用 bool 定义布尔值类型,以及 false 和 true 表示真假。
注意:C语言中没有bool型,只有C++才有boolean型,也称bool。C语言中一般用“0”表示“假”,用“1”表示“真”。