【发布时间】:2011-06-12 18:51:12
【问题描述】:
由于 C 没有布尔类型,我如何在 C 中编写这样的函数:
bool checkNumber()
{
return false;
}
【问题讨论】:
-
#define false 0 #define true 1 如果它让你有宾至如归的感觉
由于 C 没有布尔类型,我如何在 C 中编写这样的函数:
bool checkNumber()
{
return false;
}
【问题讨论】:
如果您不使用 C99,并确定需要添加自己的布尔类型,请确保给它自己的名称。 使用 'bool' 或 'BOOL' 只会在包含 3rd 方库时给您带来麻烦。 唯一的例外是使用以下事实标准:
#define BOOL int
#define TRUE 1
#define FALSE 0
但请确保将它们包装在#ifndef 中。但请注意,某些库确实使用 'char' 作为 BOOL。 如果您有 C++ 背景,请考虑是否要与 C++ 互操作。
【讨论】:
您可以使用定义来避免将整数和 1 和 0 直接用于布尔逻辑。
#define BOOL char
#define TRUE 1
#define FALSE 0
我为 BOOL 选择了 char,因为它只有 1 个字节而不是 4 个。(对于大多数系统)
【讨论】:
if (var == TRUE)这样的代码。要么使用带有布尔语义的 C99 _Bool,要么使用 int 并且不编写任何相等表达式,而是简单地使用 if (var) 和 if (!var)。
bool 类型在 <stdbool.h> 标头中定义,否则可在名称 _Bool 下使用(假设您使用的是 C99 编译器)。如果你没有 C99,你总是可以像这样发明自己的 bool 类型:
typedef enum {false, true} bool;
【讨论】:
#if !defined __cplusplus ... #endif 以实现互操作性。
int 在 C 中通常用作布尔值,至少在 C99 之前是这样。零表示假,非零表示真。
【讨论】:
int checkNumber(void) { return 0; } 是惯用的 C。