BOOL 和布尔值有什么区别?
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
bool
是内置的 C++ 类型,而BOOL
是 Microsoft 特定类型,定义为int
。您可以在windef.h
中找到它:bool
的值为true
和false
,而bool
的值为true
和false
,而 < code>BOOL 您可以使用任何int
值,尽管TRUE
和FALSE
宏是在windef.h 中定义的
标头。这意味着
sizeof
运算符将为bool
生成 1(不过,标准规定bool
的大小是实现定义的),并且4 代表BOOL
。来源:Codeguru 文章
bool
is a built-in C++ type whileBOOL
is a Microsoft specific type that is defined as anint
. You can find it inwindef.h
:The values for a
bool
aretrue
andfalse
, whereas forBOOL
you can use anyint
value, thoughTRUE
andFALSE
macros are defined in thewindef.h
header.This means that the
sizeof
operator will yield 1 forbool
(the standard states, though, that the size ofbool
is implementation defined), and 4 forBOOL
.Source: Codeguru article
在
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 supportbool
data-type, thereforeBOOL
has to stay.要补充 luvieere 所说的内容,您可以从返回
BOOL
的函数返回TRUE
或FALSE
以外的内容,例如,这是可能的因为
BOOL
本质上是一个int
。请注意,这是不可取的,因为它严重破坏了代码的一般可读性,但您可能会遇到这种情况,并且您会想知道为什么会这样。
To add to what luvieere has said, you can return something other than
TRUE
orFALSE
from a function returning aBOOL
e.g.,And this is possible because a
BOOL
is essentially anint
.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.