Cprogramming 简明教程
Booleans in C
与 int 、 char 或 float 类型不同,ANSI C 标准没有内置的或主要的布尔类型。布尔或 bool 数据通常是指可以保存两个二进制值之一的数据:真或假(或“是/否”、“开/关”等)。即使 C 中没有 bool 类型,也可以通过 enum 类型实现布尔的行为。
符合 C99 标准或更高版本的新版 C 编译器支持 bool 类型,该类型在头文件 stdbool.h 中定义。
Using enum to Implement Boolean Type in C
枚举类型为整数常量分配用户定义的标识符。我们可以定义一个枚举类型,其中 true 和 false 作为标识符,值分别为 1 和 0。
typedef enum as BOOL
为了更加简洁,我们可以使用 typedef 关键字按名称 BOOL 调用枚举 bool。
Boolean Type in stdbool.h
C 的 C99 标准引入了 stdbool.h 头文件。其中包含 bool 类型的定义,它实际上是 _bool 类型的 typedef 别名。它还定义了宏 true ,它扩展为 1,以及 false ,它扩展为 0。
Example 1
我们可以如下使用 bool 类型 −
#include <stdio.h>
#include <stdbool.h>
int main(){
bool a = true;
bool b = false;
printf("True: %d\n", a);
printf("False: %d", b);
return 0;
}
执行此代码后,您将获得以下输出 −
True: 1
False: 0
Example 2
我们也可以在逻辑表达式中使用 bool 类型变量,如下例所示 −
#include <stdio.h>
#include <stdbool.h>
int main(){
bool x;
x = 10 > 5;
if(x)
printf("x is True\n");
else
printf("x is False\n");
bool y;
int marks = 40;
y = marks > 50;
if(y)
printf("Result: Pass\n");
else
printf("Result: Fail\n");
}
运行代码并检查其输出:
x is True
Result: Fail
Example 3
让我们借助一个 bool 变量实现一个 while 循环 −
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(void){
bool loop = true;
int i = 0;
while(loop){
i++;
printf("i: %d \n", i);
if (i >= 5)
loop = false;
}
printf("Loop stopped!\n");
return EXIT_SUCCESS;
}
当你运行这段代码时,它将产生以下输出:
i: 1
i: 2
i: 3
i: 4
i: 5
Loop stopped!