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 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等)
接下來,我需要找一些資料,試著弄懂這點。
C 中的bool型別
學過c語言的程式設計師應該清楚,在c語言中,是沒有bool這個基礎型別的。在c語言中,當我們要表示真或假的時候,都是定義乙個非bool型別來使用的。在c 中,加入了布林bool這種基礎的型別,用true和false來表示真或者假,也可以用非0值來表示真,用0來表示假。在c 中,雖然布林型別只表示tr...
c 的bool型別與c 的bool型別
本來有點懶,不過還是記一下。使用hpsocket專案碰到c 呼叫結果不符合預期,也提了這個問題。最終發現是c 中的bool型別為1 byte,而c 中採用4 bytes導致,需要在dllimport時,使用 dllimport hpsocket dll path,charset charset.an...
c 中BOOL和bool的區別
1 型別不同 bool為int型 bool為布林型 2 長度不同 bool只有乙個位元組 bool長度視實際環境來定,一般可認為是4個位元組 3 取值不同 bool取值false和true,是0和1的區別 bool取值false和true,是0和非0的區別二 bool是標準c 資料型別,可取值tru...