1. bool 类型是C++的一个标准类型
我们常会遇到BOOL,那么BOOL与bool有什么区别呢?
BOOL类型,通常是程序员自己或者看库文件模拟出来的。模拟的方法可以有以下两种:
(1)typedef
2. 习惯使用bool类型,取代BOOLtypedef int BOOL; #define TRUE 1 #define FALSE 0
这种BOOL其实就是int类型,只是方便使用和记忆而已。(2)enum
typedef enum{true,false} BOOL ;
(1)bool类型是C++的标准类型,使用起来更安全可靠。
(2)bool类型一般为1个字节(sizeof(bool)可知),而上述两种模拟出来的BOOL类型均为4个字节。
3. 关于C语言中的_Bool类型
(1)C++标准:C++98
(2)C标准:C89,C99
(3)起初,C语言标准中没有内置bool类型,于是程序员想使用bool类型时,就可以通过上述的两种方式自己模拟。
C99中规定了bool类型,由于C++98中已经使用了bool类型,所以C99中就采用了_Bool.
(4)VC6.0 对C99支持的并不好,所以_Bool类型使用不了。
4. 关于C++中的bool类型实现
(1)在wtype.h中,有如下定义:
typedef short VARIANT_BOOL;
typedef VARIANT_BOOL _VARIANT_BOOL;
(2)在objidl.h中,有如下定义:
#if 0 /* bool is a standard type in C++, and a standard macro expanding to the _Bool type in C99 (see stdbool.h) */ _VARIANT_BOOL bool; #endif
这个就有点让人疑惑了,难道bool类型是short?但是实际使用就会发现bool和short有区别?(bool 1个字节,short 2个字节,bool的值只有0和1等)接下来,我需要找一些资料,试着弄懂这点。