存储布尔值的变量
C语言中使用 _Bool 类型存储布尔值。布尔值只有两种状态:true(真)或 false(假)。
1. _Bool 类型基础
_Bool 类型的变量值只能是 0 或 1,分别对应布尔值的 false 或 true。因为 0 和 1 本质是整数,所以 _Bool 也被归为整数类型。
_Bool valid = 1; // 1 表示 trueCode language: JavaScript (javascript)
2. bool 类型与 stdbool.h 头文件
_Bool 这个名称不够直观,bool 才是更简洁、可读性更高的写法。但 bool 是C99标准才引入的关键字别名,使用时需要包含头文件 stdbool.h。
stdbool.h 还定义了两个符号常量:
true→ 对应1false→ 对应0
引入后,上面的代码可以改写为:
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool valid = true; // 等价于 _Bool valid = 1;
return 0;
}Code language: PHP (php)
3. 非0即真规则
在C语言中,任何非零值都会被隐式转换为 true(存储为 1),**0 则转换为 false(存储为 0)。
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool valid = true; // 存储为 1
bool isRight = false; // 存储为 0
bool isRight2 = 1; // 1 → true(存储为 1)
bool isRight3 = 0; // 0 → false(存储为 0)
bool isRight4 = 3; // 非0 → true(存储为 1,不是 3)
printf("valid = %d\n", valid); // 输出 1
printf("isRight = %d\n", isRight); // 输出 0
printf("isRight2 = %d\n", isRight2); // 输出 1
printf("isRight3 = %d\n", isRight3); // 输出 0
printf("isRight4 = %d\n", isRight4); // 输出 1(注意:不是 3)
return 0;
}Code language: PHP (php)
4. 核心要点
| 特性 | 说明 |
|---|---|
| 底层类型 | _Bool / bool 本质是整数类型,占1字节 |
| 取值范围 | 仅 0(false)或 1(true) |
| 隐式转换 | 赋非0值 → 自动转为 1;赋0 → 保持 0 |
| 头文件 | 使用 bool/true/false 必须 #include <stdbool.h> |
| 条件判断 | if(表达式) 中,表达式结果为非0即执行真分支 |