c,c++中的布尔类型使用
1. 自己定义的“仿布尔型”
在C99标准被支持之前,我们常常自己模仿定义布尔型,方式有很多种,常见的有下面两种:
-
- #define TRUE 1
- #define FALSE 0
-
-
- enum bool{false, true};
2. 使用_Bool
有了C99标准支持,可以使用 _Bool 来定义布尔型变量。下面是一个例子程序。
- #include <stdio.h>
- #include <stdlib.h>
-
- int main(){
- _Bool a = 1;
- _Bool b = 2;
- _Bool c = 0;
- _Bool d = -1;
-
- printf("a==%d, /n", a);
- printf("b==%d, /n", b);
- printf("c==%d, /n", c);
- printf("d==%d, /n", d);
-
- printf("sizeof(_Bool) == %d /n", sizeof(_Bool));
-
- system("pause");
- return EXIT_SUCCESS;
- }
运行结果:(只有0和1两种取值)
- a==1,
- b==1,
- c==0,
- d==1,
- sizeof(_Bool) == 1
3. 使用stdbool.h
在C++中,通过bool来定义布尔变量,通过true和false对布尔变量进行赋值。C99为了让我们能够写出与C++兼容的代码,添加了一个头文件<stdbool.h>。在gcc中,这个头文件的源码如下:
-
-
-
-
- #ifndef _STDBOOL_H
- #define _STDBOOL_H
-
- #ifndef __cplusplus
-
- #define bool _Bool
- #define true 1
- #define false 0
-
- #else /* __cplusplus ,应用于C++里,这里不用处理它*/
-
-
- #define _Bool bool
- #define bool bool
- #define false false
- #define true true
-
- #endif /* __cplusplus */
-
-
- #define __bool_true_false_are_defined 1
-
- #endif /* stdbool.h */
可见,stdbool.h中定义了4个宏,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _Bool类型,true和false的值为1和0,__bool_true_false_are_defined的值为1。
下面是一个例子程序:
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
-
-
-
- int main(){
- bool m = true;
- bool n = false;
- printf("m==%d, n==%d /n", m, n);
-
- printf("sizeof(_Bool) == %d /n", sizeof(_Bool));
-
- system("pause");
- return EXIT_SUCCESS;
- }
运行结果:
- m==1, n==0
- sizeof(_Bool) == 1