C++ 中bool类型的理解和疑惑

1. bool 类型是C++的一个标准类型

     我们常会遇到BOOL,那么BOOL与bool有什么区别呢?

     BOOL类型,通常是程序员自己或者看库文件模拟出来的。模拟的方法可以有以下两种:

(1)typedef

typedef int BOOL;
#define TRUE 1
#define FALSE 0

这种BOOL其实就是int类型,只是方便使用和记忆而已。

(2)enum

typedef enum{true,false} BOOL ;


2. 习惯使用bool类型,取代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等)

接下来,我需要找一些资料,试着弄懂这点。

posted @ 2011-07-03 12:03  JarvisChu  阅读(9410)  评论(0编辑  收藏  举报