C 语言标准(C89) 没有定义布尔类型,如果你使用 true 和 false,会出现以下错误:
- infinite.c:5:12: error: use of undeclared identifier 'true'
- while (true) {
-
- 1 error generated.
- make: *** [infinite] Error 1
我们可以借助 C 语言的宏定义来哦设置:
- //宏定义布尔类型
- #define BOOL int
- #define TRUE 1
- #define FALSE 0
-
- //定义一个布尔变量
- BOOL flag = FALSE;
也可以通过枚举类来定义:
- typedef enum
- {
- true=1, false=0
- }bool;
- #include <stdio.h>
-
- //计算n!,n的值在main中定义
- int main(void)
- {
- int n = 10; //计算叠乘数
- int sum = 1; //用来存放叠乘的结果
- typedef enum
- {
- true=1, false=0
- }bool;
- bool flag = false; //叠乘标记
-
- int num = n; //循环次数
- while( !flag )
- {
- sum = sum * (num--);
- //当num=1时结束循环
- if( num == 1)
- {
- flag = true;
- }
- }
- printf ("%d的叠乘值为 %d \n", n, sum);
- return 0;
- }
输出结果为:
- 10的叠乘值为 3628800
C99 还提供了一个头文件 <stdbool.h> 定义了 bool 代表 _Bool,true 代表 1,false 代表 0。只要导入 stdbool.h ,就能非常方便的操作布尔类型了。
- //导入 stdbool.h 来使用布尔类型
- #include <stdbool.h>
- #include <stdio.h>
-
- //计算n!,n的值在main中定义
- int main(void)
- {
- int n = 10; //计算叠乘数
- int sum = 1; //用来存放叠乘的结果
- bool flag = false; //叠乘标记
-
- int num = n; //循环次数
- while( !flag )
- {
- sum = sum * (num--);
- //当num=1时结束循环
- if( num == 1)
- {
- flag = true;
- }
- }
- printf ("%d的叠乘值为 %d \n", n, sum);
- return 0;
- }
输出结果为:
- 10的叠乘值为 3628800