为什么有人会使用 int 而不是 bool 数据类型?

Why would someone use int instead of bool data type?

最近我在一个项目中看到他们将 int 类型定义为 BOOL 并使用它代替 bool。这样做有什么好处吗?

typedef int BOOL;

如果他们经常与 C 代码交互,他们可能会这样做。由于 C 没有 bool 类型——至少直到 C11(我认为是,或者可能是 C99)引入了 _Bool 类型——老实说,我不记得它是否与 C++ 兼容 bool - 他们应该刚刚采用 bool 关键字(恕我直言),但我离题了。

此外,在旧的 C++ 代码库中,pre-date C++ 获得 bool 的 C++98 标准很常见。

所以 legacyC 兼容性 就是答案。

C 在 1999 年标准之前没有专用的布尔类型 - 任何具有 non-zero 值的标量都被认为是 "true",而零值被认为是 "false"。一个常见的 约定 是使用宏 and/or 类型定义来创建布尔值:

#define BOOL int
#define TRUE (1)
#define FALSE (0)

typedef int bool;
static const bool true = 1;
static const bool false = 0;

或类似的东西。

所以您看到的是旧的(C99 之前的)C 代码,或者是在该标准出现之前学习 C 的人编写的代码。

请注意,C 仍然认为 any non-zero 标量值是 "true",并且 if 和 [=13= 中的控制表达式] 和 while/do while 语句不必特别具有布尔类型。由于它源自 C,因此在 C++ 中也是如此,尽管它也有专用的布尔类型和运算符。