BOOL

BOOL

數據類型
BOOL是布爾型變量,也就是邏輯型變量的定義符,類似于float、double等,隻不過float定義浮點型,double定義雙精度浮點型[1]。在objective-c中提供了相似的類型BOOL,它具有YES值和NO值。布爾型變量的值隻有真(true)和假(false),可用于邏輯表達式,也就是“或”“與”“非”之類的邏輯運算和大于小于之類的關系運算,邏輯表達式運算結果為真或為假。
  • 中文名:BOOL
  • 外文名:BOOL
  • 适用領域:
  • 所屬學科:
  • 屬性:布爾型變量
  • 類似:float,double等

BOOL和bool

1、類型不同

bool為布爾型用作邏輯判斷

BOOL在typedef int BOOL;

在typedef long BOOL;

2、長度不同

bool隻有一個字節

BOOL長度視實際環境來定,一般可認為是4個字節

3、取值不同

bool取值false和true,0為false,非0為true。(例如-1和2都是true)。

如果數個bool對象列在一起,可能會各占一個Byte,這取決于編譯器。

BOOL是微軟定義的typedef int BOOL(在windef.h中),0為FALSE,1為TRUE。(-1和2既不是TRUE也不是FALSE)。

#ifndef FALSE

#define FALSE

0

#endif

#ifndef TRUE

#define TRUE

1

#endif

布爾型變量bool

布爾型變量的值隻有 真 (true) 和假 (false)。

布爾型變量可用于邏輯表達式,也就是“或”“與”“非”之類的邏輯運算和大于小于之類的關系運算,邏輯表達式運算結果為真或為假。

bool可用于定義函數類型為布爾型,函數裡可以有 return TRUE; return FALSE 之類的語句。

布爾型運算結果常用于條件語句,

if (邏輯表達式)

{

如果是 true 執行這裡;

}

else

{

如果是 false 執行這裡;

};

三、關于bool的小例子

(1)

#include

using namespace std;

int main()

{

bool b =1; //執行此行後,b=1(true)

if(b)

cout << "ok!" << endl;

b = b-1; //執行此行後,b=0(false)

if(b)

cout << "error!" <

return 0;

}

運行結果:OK!

(2)

#include

using namespace std;

int main()

{

bool b =1; //執行此行後,b=1(true)

if(b)

cout << "ok!" << endl;

這裡不用加吧

if(b)

cout << "error!" <

return 0;

}

運行結果:OK!

error!

若想更了解的話,讀者可以在定義b時改成 bool b=0;看看運行結果

C99新增類型_Bool

C99标準定義了一個新的關鍵字_Bool,提供了布爾類型。以前,C程序員總是使用自己的方法定義布爾類型。0表示false,非0表示true。可能使用char類型表示一個布爾類型,也可能使用int類型表示一個布爾類型。很多函數庫都定義了自己的布爾類型和相應的宏,枚舉,typedef。現在C99把C語言原生的布爾類型帶來了。C99中同時增添的關鍵字還有_Complex,_Imaginary等。

這個頭文件定義了bool,true,false等宏。

C2008草案中說:

“Anobject declared as type_Boolis large enough to store the values 0 and1.”

也就是說,隻規定了_Bool類型的大小是至少能夠存放0和1這兩個值。并沒有規定具體的大小。這交給編譯器自由發揮了。

用gcc(32位環境)做下面的測試:

#include

#include

#include

int main(void)

{

printf("sizeof(bool):%dn",sizeof(bool));

printf("sizeof(char):%dn",sizeof(char));

printf("sizeof(int):%dn",sizeof(int));

printf("sizeof(long):%dn",sizeof(long));

return EXIT_SUCCESS;

}

輸出結果:

sizeof(bool):1

sizeof(char):1

sizeof(int):4

sizeof(long):4

由此可見,gcc是用char來實現_Bool類型的。

看看給_Bool類型賦值會怎樣:

#include

#ihclude

#include

int main(void)

{

bool boolean=-11212112;

printf("boolean:%dn",boolean);

return EXIT_SUCCESS;

}

輸出結果:

boolean:1

看來,gcc編譯器對待_Bool類型有自己的轉換處理。如果是0賦值給_Bool類型,那麼就賦值0。如果是任意其他數據,那麼會賦值為1!(隻是不知道其他編譯器是否如此處理,C2008标準草案沒有細說這個部分)_Bool類型隻有0和1這兩個值!​

相關詞條

相關搜索

其它詞條