C没有任何内置布尔类型。在C语言中使用它们的最佳方式是什么?


当前回答

现在C99支持布尔类型,但需要#include<stdbool.h>。

例子:

#include <stdbool.h>

int main() 
{ 
    bool arr[2] = {true, false}; 

    printf("%d\n", arr[0] && arr[1]);
    printf("%d\n", arr[0] || arr[1]);

    return 0; 
} 

输出:

0
1

其他回答

如果使用C99,则可以使用_Bool类型。不需要#includes。不过,您确实需要将其视为整数,其中1为真,0为假。

然后可以定义TRUE和FALSE。

_Bool this_is_a_Boolean_var = 1;


//or using it with true and false
#define TRUE 1
#define FALSE 0
_Bool var = TRUE;
typedef enum {
    false = 0,
    true
} t_bool;

这是我使用的:

enum {false, true};
typedef _Bool bool;

_Bool是C语言中的内置类型,用于布尔值。

从好到坏:

选项1(C99及更新版本)

#include <stdbool.h>

选项2

typedef enum { false, true } bool;

选项3

typedef int bool;
enum { false, true };

选项4

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

解释

只有当你使用C99(或更高版本)时,选项1才会起作用,这是“标准方式”。如果可能,请选择此选项。选项2、3和4实际上具有相同的行为#2和#3不使用#defines,我认为这更好。

如果你还没有决定,那就选择#1!

这就是:

#define TRUE 1
#define FALSE 0