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