在VC ++中我们有数据类型“BOOL”,可以假设值为TRUE或FALSE,并且我们有数据类型“bool”,它可以假设值为true或false。
它们之间的区别是什么时候应该使用每种数据类型?
答案 0 :(得分:35)
bool
是内置的C ++类型,而BOOL
是Microsoft特定类型,定义为int
。您可以在windef.h
中找到它:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
bool
的值为true
和false
,而对于BOOL
,您可以使用任何int
值,TRUE
和FALSE
标头中定义了windef.h
个宏。
这意味着sizeof
运算符将为bool
生成1(标准状态,bool
的大小是实现定义的),而BOOL
为4 }。
答案 1 :(得分:14)
在将bool
投入C ++之前,Windows API具有此类型。这就是为什么它仍然存在于所有采用BOOL的Windows功能中。 C不支持bool
数据类型,因此BOOL
必须保留。
答案 2 :(得分:10)
要添加到luvieere所说的内容,您可以从返回TRUE
的函数返回FALSE
或BOOL
以外的内容,例如
BOOL myFunc(int a)
{
if (a < 3) return FALSE;
else if (a > 3) return TRUE;
else return 2;
}
这是可能的,因为BOOL
基本上是int
。
请注意,这是不可取的,因为它会严重破坏代码的一般可读性,但这是你可能遇到的问题,你会想知道为什么会如此。