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等)接下來,我需要找一些資料,試着弄懂這點。