BOOL和bool的區別

2022-08-24 09:54:12 字數 1386 閱讀 4062

1、型別不同

bool為int型,微軟自定義型別:typedef int   bool;

bool為布林型,為c++標準的資料型別

2、長度不同

bool只有乙個位元組

bool長度視實際環境來定,一般可認為是4個位元組,因為它本身是int型

3、取值不同

bool取值false和true,是0和1的區別

bool取值false和true,是0和非0的區別

如果數個bool物件列在一起,可能會各佔乙個bit,這取決於編譯器。

bool是微軟定義的typedef int bool(在windef.h中)。與bool不同,它是乙個三值邏輯,

true/false/error,定義如下:(afx.h)

#define false 0

#define true 1

#define error 0

win32 api中很多返回值為bool的函式都是三值邏輯。比如getmessage().

例如:bool x=3;    //告警

bool x=1;    //正確

bool x=3;    //正確

bool x=3.3;  //告警

bool型別可以賦值給bool型別,但是bool型別賦值給bool型別會告警

布林型變數bool

bool是布林型變數,也就是邏輯型變數的定義符,類似於float,double等,只不過float定義浮點型,double定義雙精度浮點型。

布林型變數的值只有真 (true) 和假(false)。

布林型變數可用於邏輯表示式,也就是「或」「與」「非」之類的邏輯運算和大於小於之類的關係運算,邏輯表示式運算結果為真或為假。

bool可用於定義函式型別為布林型,函式裡可以有 return true; return false 之類的語句。

布林型運算結果常用於條件語句,假設布林變數名字為flag,它與零值比較的標準if語句如下:

if (flag) //表示flag為真

if (!flag) //表示flag為假

其它的用法都屬於不良風格,例如:

if (flag == true)

if (flag == 1 )

if (flag == false) 

if (flag == 0)

由以上可知 bool佔4個位元組,bool佔1個位元組。來以為計算機處理1個位元組比處理4個位元組快。其實不時這樣的。由於現在的cpu都是32位的,所以cpu一次處理4個位元組,那麼處理1個位元組需要額外的處理。所以效率就低。

typedef  char  bool

typedef  dword bool

BOOL和bool的區別

bool和bool的區別 1 型別不同 bool為int型 bool為布林型 2 長度不同 bool只有乙個位元組 bool長度視實際環境來定,一般可認為是4個位元組 3 取值不同 bool取值false和true,是0和1的區別 bool取值false和true,是0和非0的區別而bool是標準c...

BOOL和bool的區別

一 1 型別不同 bool為int型 bool為布林型 2 長度不同 bool只有乙個位元組 bool長度視實際環境來定,一般可認為是4個位元組 3 取值不同 bool取值false和true,是0和1的區別 bool取值false和true,是0和非0的區別 二 bool是標準c 資料型別,可取值...

BOOL和bool的區別

一 1 型別不同 bool為int型 bool為布林型 2 長度不同 bool只有乙個位元組 bool長度視實際環境來定,一般可認為是4個位元組 3 取值不同 bool取值false和true,是0和1的區別 bool取值false和true,是0和非0的區別 二 bool是標準c 資料型別,可取值...