kalilearner

关于如何在 C 语言中使用布尔(bool)类型

在 C 语言中,布尔类型不是 C 语言的内置数据类型,C 语言默认将 0 设为 false,将 1 设为 true。但从 C99 开始,添加了 _Bool 类型并引入标准库文件 stdbool.h,从而使得 bool 数据类型能直接应用到 C语言代码中。

stdbool.h实际上只有几行代码:

#ifndef _STDBOOL
#define _STDBOOL
#define __bool_true_false_are_defined 1
#ifndef __cplusplus
#define bool _Bool
#define false 0
#define true 1
#endif // __cplusplus
#endif // _STDBOOL

它的作用就是:

  • 定义 __bool_true_false_are_defined 为 1
  • 将 bool 定义为 C99 内置类型 _Bool
  • 将 true 和 false 分别定义为 1 和 0
  • 对于 _Bool 类型,可以对其任意赋值,任何对其非 0 的赋值在调用此变量时都会返回 1

以下为使用 stdbool.h 的代码示例:

#include <stdbool.h>
#include <stdio.h>

int main()
{
    printf("true = %d\n", true);
    printf("false = %d\n", false);
    bool a = 0;
    bool b = 'b';
    bool c = "Hello world";
    printf("bool a = %d\n", a);
    printf("bool b = %d\n", b);
    printf("bool c = %d\n", c);
    return 0;
}

运行结果:

true = 1
false = 0
bool a = 0
bool b = 1
bool c = 1