BOOL 和布尔值有什么区别?

发布于 2024-11-16 12:37:51 字数 119 浏览 0 评论 0原文

在 VC++ 中,我们有数据类型“BOOL”,它可以假定值 TRUE 或 FALSE,并且我们有数据类型“bool”,它可以假定值 true 或 false。

它们之间有什么区别以及何时应该使用每种数据类型?

In VC++ we have the data type “BOOL” which can assume the value TRUE or FALSE, and we have the data type “bool”, which can assume the value true or false.

What is the difference between them and when should each data type be used?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

燃情 2024-11-23 12:37:51

bool 是内置的 C++ 类型,而 BOOL 是 Microsoft 特定类型,定义为 int。您可以在 windef.h 中找到它:

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

bool 的值为 truefalse,而 bool 的值为 truefalse,而 < code>BOOL 您可以使用任何 int 值,尽管 TRUEFALSE 宏是在 windef.h 中定义的 标头。

这意味着 sizeof 运算符将为 bool 生成 1(不过,标准规定 bool 的大小是实现定义的),并且4 代表 BOOL

来源:Codeguru 文章

bool is a built-in C++ type while BOOL is a Microsoft specific type that is defined as an int. You can find it in windef.h:

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

The values for a bool are true and false, whereas for BOOL you can use any int value, though TRUE and FALSE macros are defined in the windef.h header.

This means that the sizeof operator will yield 1 for bool (the standard states, though, that the size of bool is implementation defined), and 4 for BOOL.

Source: Codeguru article

遇见了你 2024-11-23 12:37:51

bool 被扔进 C++ 之前,Windows API 就有这种类型。这就是为什么它仍然存在于所有采用 BOOL 的 Windows 函数中。 C 不支持 bool 数据类型,因此必须保留 BOOL

Windows API had this type before bool was thrown into C++. And that's why it still exits in all Windows function that take BOOL. C doesn't support bool data-type, therefore BOOL has to stay.

风透绣罗衣 2024-11-23 12:37:51

要补充 luvieere 所说的内容,您可以从返回 BOOL 的函数返回 TRUEFALSE 以外的内容,例如,

BOOL myFunc(int a)
{
    if (a < 3) return FALSE;
    else if (a > 3) return TRUE;
    else return 2;
}

这是可能的因为 BOOL 本质上是一个 int

请注意,这是不可取的,因为它严重破坏了代码的一般可读性,但您可能会遇到这种情况,并且您会想知道为什么会这样。

To add to what luvieere has said, you can return something other than TRUE or FALSE from a function returning a BOOL e.g.,

BOOL myFunc(int a)
{
    if (a < 3) return FALSE;
    else if (a > 3) return TRUE;
    else return 2;
}

And this is possible because a BOOL is essentially an int.

Please note that this is not advisable as it severely destroys the general readability of code but it is something you can come across and you will be wondering why it is so.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文