Ume*_* MS 32 windows winapi mfc visual-c++
在VC++中,我们有数据类型"BOOL",可以假设值为TRUE或FALSE,并且我们有数据类型"bool",它可以假定值为true或false.
它们之间的区别是什么时候应该使用每种数据类型?
luv*_*ere 38
bool
是一个内置的C++类型,BOOL
而是一个Microsoft特定类型,定义为int
.您可以在windef.h
以下位置找到它:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
Run Code Online (Sandbox Code Playgroud)
一个值bool
ARE true
和false
,而对于BOOL
您可以使用任何int
价值,虽然TRUE
和FALSE
宏在定义的windef.h
头.
这意味着sizeof
运算符将产生1 bool
(标准状态,但bool
实现定义的大小),以及4 BOOL
.
资料来源:Codeguru文章
Aja*_*jay 14
Windows API在bool
抛入C++ 之前就具有此类型.这就是为什么它仍然存在于所有采用BOOL的Windows功能中.C不支持bool
数据类型,因此BOOL
必须保留.
Aam*_*mir 10
要添加到什么luvieere说,你可以返回其他的东西比TRUE
或FALSE
从函数返回一个BOOL
如
BOOL myFunc(int a)
{
if (a < 3) return FALSE;
else if (a > 3) return TRUE;
else return 2;
}
Run Code Online (Sandbox Code Playgroud)
这是可能的,因为a BOOL
本质上是一个int
.
请注意,这是不可取的,因为它严重破坏了代码的一般可读性,但它是你可以遇到的东西,你会想知道为什么会这样.