一、BOOL 和 bool 來歷
在C語言中,沒有bool和BOOL這兩個關鍵字的,如果要使用,除非你自己定義。但是在coder的日常使用中,有太多的應用場景需要判斷是是非非,所有coder需要經常定義這個表徵是非的“關鍵字”。能與時俱進的語言纔是有活力的語言。在C++中引入了bool關鍵字,但是大家平常也會看到或者使用BOOL,這又是怎麼回事呢?答曰:這是微軟自己定義的。就拿MFC來說,在頭文件WTYPES.H和WINDEF.H中的定義如下:
typedef long BOOL; //WTYPE.H
typedef int BOOL; //WINDEF.H
從上面的分析可以看出,bool是真正的布爾型,而BOOL不是真正意義上的布爾型,準確的說應該是整形。
二、BOOL 和 bool 的長度
bool型的長度是1個字節,而BOOL型的長度是4個字節(不同的編譯器,分配的字節數可能有出入。這裏以MFC爲例)。
bool bIsOk = false;
BOOL bIsRunning = FALSE;
int nSize = sizeof(bIsOk);
int nLen = sizeof(bIsRunning);
可以在內存看到,變量nSize和nLen的長度分別是1 和 4.
三、取值不同
bool的取值爲true,或者false,是1或者0,而BOOL的取值爲TRUE或者FALSE,,表示非零,或者零。
四、注意
在使用的過程切勿將兩者混用,比如bool型的賦值爲TRUE或者FALSE,而BOOL型的賦值爲true或者false,這些都是不行的。