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等)

接下來,我需要找一些資料,試着弄懂這點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM