1、C99 之前的方法
在 C99 标准之前,C 语言没有内建的布尔类型。开发者通常采用以下替代方法。
1) 使用 typedef 配合 #define 宏定义
#include <stdio.h> typedef int bool; #define true 1 #define false 0 int main() { bool isEven = true; int num = 4; // 使用自定义的 bool 类型进行判断 if (isEven && num % 2 == 0) { printf("The number %d is even.\n", num); } else { printf("The number %d is odd.\n", num); } // 修改 isEven 的值 isEven = false; if (!isEven) { printf("isEven is now false.\n"); } return 0; }
2)使用 typedef 中的 enum 枚举类型
#include <stdio.h> typedef int bool; enum { false, true }; // false = 0, true = 1 int main() { bool isActive = true; bool isCompleted = false; if (isActive) { printf("The task is active.\n"); } else { printf("The task is not active.\n"); } if (isCompleted) { printf("The task is completed.\n"); } else { printf("The task is not completed.\n"); } return 0; }
3)显式地将 typedef 与 enum 结合
#include <stdio.h> // 定义布尔类型 typedef enum { false, true } bool; int main() { bool isActive = true; bool isFinished = false; // 使用布尔类型的值 if (isActive) { printf("The process is active.\n"); } if (!isFinished) { printf("The process is not finished yet.\n"); } return 0; }
2、C99 及更高版本
C99 标准引入了 头文件,定义了 bool
作为 _Bool
(内建类型)的宏。true
和 false
分别作为 1
和 0
的宏。
#include <stdio.h> #include <stdbool.h> int main() { bool flag = true; // 定义一个布尔类型变量并初始化为 true // 根据 flag 的值执行不同的操作 if (flag) { printf("Flag is true!\n"); } else { printf("Flag is false!\n"); } // 修改 flag 的值为 false flag = false; // 再次判断 flag 的值 if (flag) { printf("Flag is true!\n"); } else { printf("Flag is false!\n"); } return 0; }