C没有任何内置布尔类型。在C语言中使用它们的最佳方式是什么?
当前回答
可以使用_Bool,但返回值必须是整数(1表示真,0表示假)。但是,建议在C++中包含和使用bool,如中所述这个来自daniweb论坛的回答,以及来自另一个stackoverflow问题的回答:
_布尔:C99的布尔类型。只有在维护已经为Bool、true或false定义宏的遗留代码时,才建议直接使用_Bool。否则,这些宏将在标题中标准化。包含该标头,您可以像在C++中一样使用bool。
其他回答
从好到坏:
选项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!
现在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
您可以使用一个字符或另一个小数字容器。
伪码
#define TRUE 1
#define FALSE 0
char bValue = TRUE;
这是我使用的:
enum {false, true};
typedef _Bool bool;
_Bool是C语言中的内置类型,用于布尔值。
如果使用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;