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

时间:2010-11-11 22:04:24

标签: c types boolean

我只是在C中编写代码,结果发现它没有boolean / bool数据类型。我可以包含任何C库,以便能够返回boolean / bool数据类型吗?

7 个答案:

答案 0 :(得分:66)

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

#include <stdbool.h>

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

#define bool int
#define true 1
#define false 0

在我看来,你也可以使用int并使用零来表示假和非零表示真。这就是它通常在C中完成的方式。

答案 1 :(得分:17)

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

typedef enum {false=0, true=1} bool;

答案 2 :(得分:3)

C99有bool类型。要使用它,

#include <stdbool.h>

答案 3 :(得分:1)

作为James McNellis回答的替代方案,我总是尝试使用bool类型的枚举而不是宏:typedef enum bool {false=0; true=1;} bool;。它更安全b / c它允许编译器进行类型检查并消除宏扩展竞争

答案 4 :(得分:0)

C99引入了_Bool作为内在的纯布尔类型。无需#include

int main(void)
{
  _Bool b = 1;
  b = 0;
}

在真正的C99(或更高版本)兼容的C编译器上,上述代码应能完美编译。

答案 5 :(得分:0)

我们可以为此使用枚举类型。我们不需要库。 例如

           enum {false,true};

false的值为0,true的值为1。

答案 6 :(得分:-1)

struct Bool {
    int true;
    int false;
}

int main() {

    /* bool is a variable of data type – bool*/
    struct Bool bool;

    /*below I’m accessing struct members through variable –bool*/ 
    bool = {1,0};
    print("Student Name is: %s", bool.true);
    return 0;
}