c中bool的用法
c中bool的用法
cc中bool的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下cc中bool的用法的用法,希望對(duì)你們有用。
cc中bool的用法的用法如下:
我們知道在C++里有專(zhuān)門(mén)的bool類(lèi)型,用來(lái)表示真或假。但是在C語(yǔ)言里沒(méi)有這樣的類(lèi)型(至少我是一直這么認(rèn)為的),表達(dá)式的值0為假,非0為真。所以條件判斷語(yǔ)句( if(...)、while(...) )非常靈活,甚至一個(gè)指針類(lèi)型都可以是條件表達(dá)式。
為了使程序更清晰,我們常常會(huì)給出如下的宏定義:
typedef int BOOL;
#define TRUE 1
#define FALSE 0
這是最常見(jiàn)的寫(xiě)法,能被任何C語(yǔ)言編譯器認(rèn)可。
今天我在一段程序里看見(jiàn)這么一行 #include <stdbool.h>,這個(gè)陌生的頭文件還以std打頭而且還和bool有關(guān),引起了我的警覺(jué),立刻百度之。得知這是C99標(biāo)準(zhǔn)新增的頭文件,意在引入bool類(lèi)型,使之和C++兼容。隨后我看了一下這個(gè)頭文件的源代碼,內(nèi)容如下:
/*
* ISO C Standard: 7.16 Boolean type and values <stdbool.h>
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supporting <stdbool.h> 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 */
這個(gè)頭文件很短,而且也很明了,不過(guò)我對(duì)_Bool這個(gè)類(lèi)型產(chǎn)生的興趣。又一翻百度,發(fā)現(xiàn)這是C99標(biāo)準(zhǔn)引入的新的關(guān)鍵字。對(duì),是關(guān)鍵字,而不是宏定義,也不是typedef。通過(guò)sizeof(_Bool);得知這個(gè)類(lèi)型占1個(gè)字節(jié),而且無(wú)論給這個(gè)類(lèi)型的變量賦任何非0整數(shù)值,其值都是1,這也說(shuō)明了他不是其他整數(shù)類(lèi)型的別名。
好了,其實(shí)說(shuō)白了,C語(yǔ)言不是沒(méi)有布爾類(lèi)型,只能說(shuō)在C99標(biāo)準(zhǔn)之前沒(méi)有。現(xiàn)在只要在源文件中包含stdbool.h這個(gè)頭文件,就可以在C語(yǔ)言里像C++那樣使用bool類(lèi)型了。