C没有任何内置布尔类型。在C语言中使用它们的最佳方式是什么?
当前回答
C中的布尔值是一个整数:假为零,真为非零。
另请参见布尔数据类型,C节,C++,Objective-C,AWK。
其他回答
C中的布尔值是一个整数:假为零,真为非零。
另请参见布尔数据类型,C节,C++,Objective-C,AWK。
您可以使用一个字符或另一个小数字容器。
伪码
#define TRUE 1
#define FALSE 0
char bValue = TRUE;
如果条件表达式为非零,则认为它们为真,但C标准要求逻辑运算符本身返回0或1。
@汤姆:#定义正确!FALSE是糟糕的,完全没有意义。如果头文件进入编译的C++代码,那么它可能会导致问题:
void foo(bool flag);
...
int flag = TRUE;
foo(flag);
某些编译器会生成关于int=>bool转换的警告。有时人们会通过以下方式避免这种情况:
foo(flag == TRUE);
以强制表达式为C++布尔值。但如果你#定义TRUE!如果为FALSE,则结果为:
foo(flag == !0);
它最终会进行int到bool的比较,这无论如何都会触发警告。
这是我使用的:
enum {false, true};
typedef _Bool bool;
_Bool是C语言中的内置类型,用于布尔值。
typedef enum {
false = 0,
true
} t_bool;