C語言的布林型別 Bool

2021-08-10 11:09:34 字數 3668 閱讀 8942

也許很多人都和我一樣,不知道現在的c語言已經有了布林型:從c99標準開始,型別名字為「

_bool」。

在此之前的c語言中,使用整型int來表示真假。在輸入時:使用非零值表示真;零值表示假。在輸出時:真的結果是1,假的結果是0;(這裡我所說的「輸入」,意思是:當在乙個需要布林值的地方,也就是其它型別轉化為布林型別時,比如 if 條件判斷中的的條件;「輸出」的意思是:程式的邏輯表示式返回的結果,也就是布林型別轉化為其他型別時,比如 a==b的返回結果,只有0和1兩種可能)。

所以,現在只要你的編譯器支援c99(我使用的是dev c++4.9.9.2),你就可以直接使用布林型了。另外,c99為了讓cc++相容,增加了乙個標頭檔案stdbool.h。裡面定義了booltruefalse,讓我們可以像c++一樣的定義布林型別。

在c99標準被支援之前,我們常常自己模仿定義布林型,方式有很多種,常見的有下面兩種:

[cpp]view plain

copy

print

? /* 第一種方法 */

#define true 1

#define false 0

/* 第二種方法 */

enum

bool;   

/* 第一種方法 */

#define true 1

#define false 0

/* 第二種方法 */

enum bool;

現在,我們可以簡單的使用 _bool 來定義布林型變數。_bool型別長度為1,只能取值範圍為0或1。將任意非零值賦值給_bool型別,都會先轉換為1,表示。將零值賦值給_bool型別,結果為0,表示。 下面是乙個例子程式。

[cpp]view plain

copy

print

? #include 

#include 

int main()  

#include #include int main()
執行結果如下:(只有0和1兩種取值)

[cpp]view plain

copy

print

? a==1,  

b==1,  

c==0,  

d==1,  

sizeof(_bool) == 1  

a==1,

b==1,

c==0,

d==1,

sizeof(_bool) == 1

在c++中,通過bool來定義布林變數,通過truefalse對布林變數進行賦值。c99為了讓我們能夠寫出與c++相容的**,新增了乙個標頭檔案<stdbool.h>。在gcc中,這個標頭檔案的原始碼如下:(注,為了清楚,不重要的注釋部分已經省略)

[cpp]view plain

copy

print

? this file is part of gcc.

*/#ifndef _stdbool_h

#define _stdbool_h

#ifndef __cplusplus

#define bool    _bool

#define true    1

#define false   0

#else /* __cplusplus ,應用於c++裡,這裡不用處理它*/

/* supporting in c++ is a gcc extension.  */

#define _bool   bool

#define bool    bool

#define false   false

#define true    true

#endif /* __cplusplus */

/* signal that all the definitions are present.  */

#define __bool_true_false_are_defined   1

#endif  /* stdbool.h */

this file is part of gcc.

*/#ifndef _stdbool_h

#define _stdbool_h

#ifndef __cplusplus

#define bool _bool

#define true 1

#define false 0

#else /* __cplusplus ,應用於c++裡,這裡不用處理它*/

/* supporting in c++ is a gcc extension. */

#define _bool bool

#define bool bool

#define false false

#define true true

#endif /* __cplusplus */

/* signal that all the definitions are present. */

#define __bool_true_false_are_defined 1

#endif /* stdbool.h */

可見,stdbool.h中定義了4個巨集,bool、true、false、__bool_true_false_are_defined。 其中bool就是 _bool型別,true和false的值為1和0,__bool_true_false_are_defined的值為1。

下面是乙個例子程式

[cpp]view plain

copy

print

? #include 

#include 

#include 

/* 測試c99新新增的標頭檔案 stdbool.h */

int main()  

#include #include #include /* 測試c99新新增的標頭檔案 stdbool.h */

int main()

執行結果為:

[cpp]view plain

copy

print

? m==1,  n==0  

sizeof(_bool) == 1  

m==1,  n==0

sizeof(_bool) == 1

C語言的布林型別 Bool

也許很多人都和我一樣,不知道現在的c語言已經有了布林型 從c99標準開始,型別名字為 bool 在此之前的c語言中,使用整型int來表示真假。在輸入時 使用非零值表示真 零值表示假。在輸出時 真的結果是1,假的結果是0 這裡我所說的 輸入 意思是 當在乙個需要布林值的地方,也就是其它型別轉化為布林型...

C語言的布林型別 Bool

也許很多人都和我一樣,不知道現在的c語言已經有了布林型 從c99標準開始,型別名字為 bool 在此之前的c語言中,使用整型int來表示真假。在輸入時 使用非零值表示真 零值表示假。在輸出時 真的結果是1,假的結果是0 這裡我所說的 輸入 意思是 當在乙個需要布林值的地方,也就是其它型別轉化為布林型...

C語言中的布林(bool)型別

想必很多初學者都曾遇到過在c程式中編寫bool型別變數結果編譯報錯的情況吧?我們知道在c 裡有專門的bool型別,用來表示真或假。但是在c語言裡沒有這樣的型別 我一直這麼認為 表示式的值0為假,非0為真。所以條件判斷語句非常靈活,甚至乙個指標型別都可以是條件表示式。為了使程式更清晰,我們常常會給出如...