布尔值

存储布尔值的变量

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 → 对应 1
  • false → 对应 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即执行真分支

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注