如何在C中使用布尔数据类型?

its*_*ode 42 c types boolean

我只是用C编写代码和原来它没有一个布尔/布尔数据类型.是否有任何C库,我可以包括给我回一个布尔/布尔数据类型的能力吗?

Jam*_*lis 68

如果你有一个支持C99的编译器,你可以

#include <stdbool.h>
Run Code Online (Sandbox Code Playgroud)

否则,您可以根据需要定义自己的.根据您的使用方式(以及您是否希望能够将代码编译为C++),您的实现可能非常简单:

#define bool int
#define true 1
#define false 0
Run Code Online (Sandbox Code Playgroud)

在我看来,你也可以int使用零来表示虚假和非零意味着真实.这就是通常用C语言完成的.

  • @its:如果你为 `bool`、`true` 和 `false` 定义了宏,那么让你的返回类型为 `bool` 并返回 `false`。否则,只需将返回类型设为 `int` 并返回 `0`。这取决于你想做什么。我只是认为非宏观方法更好。 (2认同)

cav*_*man 17

实际上,C99有一个布尔数据类型,但如果必须使用旧版本,只需定义一个类型:

typedef enum {false=0, true=1} bool;
Run Code Online (Sandbox Code Playgroud)

  • 如果你问我,"仿效"`bool`在C99之前是危险的,因为语义不同.`(bool)2`产生2,而不是1.一个更现实的例子:`1U <<(bool)isdigit(c)`将在大多数实现中给出错误的结果. (5认同)

小智 5

C99有一个bool类型。要使用它,

#include <stdbool.h>
Run Code Online (Sandbox Code Playgroud)