最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談C語(yǔ)言編程中的布爾bool數(shù)據(jù)類(lèi)型

 更新時(shí)間:2015年11月17日 17:27:51   作者:wind19  
這篇文章主要介紹了C語(yǔ)言編程中的布爾bool數(shù)據(jù)類(lèi)型,bool并不是需要通過(guò)C++才能使用的,需要的朋友可以參考下

我們知道在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 ,這個(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
  */
  #ifndef _STDBOOL_H
  #define _STDBOOL_H
  #ifndef __cplusplus
  #define bool _Bool
  #define true 1
  #define false 0
  #else /* __cplusplus */
  /* 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 */

  這個(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)有?,F(xiàn)在只要在源文件中包含stdbool.h這個(gè)頭文件,就可以在C語(yǔ)言里像C++那樣使用bool類(lèi)型了。
所以如果是C99之前的標(biāo)準(zhǔn),需要我們自己定義bool,如

typedef enum {false = 0, true = 1} bool;

那么我們就來(lái)看一下C語(yǔ)言中的相關(guān)定義:
1.FALSE/TRUE與false/true的區(qū)別: 
    false/true是標(biāo)準(zhǔn)C++語(yǔ)言里新增的關(guān)鍵字,而FALSE/TRUE是通過(guò)#define,這要用途
是解決程序在C與C++中環(huán)境的差異,以下是FALSE/TRUE在windef.h的定義:

#ifndef  FALSE 
#define  FALSE  0 
#endif 
#ifndef  TRUE 
#define  TRUE  1 
#endif 

也就是說(shuō)FALSE/TRUE是int類(lèi)型,而false/true是bool類(lèi)型;所以?xún)烧卟灰粯拥模徊贿^(guò)
我們?cè)谑褂弥袥](méi)有這種感覺(jué),因?yàn)镃++會(huì)幫你做隱式轉(zhuǎn)換。
2.bool的大小與BOOL的區(qū)別:
bool在C++里是占用1字節(jié),而B(niǎo)OOL是int類(lèi)型,int類(lèi)型的大小是視具體環(huán)境而定的;所以
來(lái)說(shuō):false/true只占用1個(gè)字節(jié),而TRUE/FALSE視具體環(huán)境而言,以下是BOOL在windef
.h中的定義:typedef   int   BOOL;
3.NULL與0的區(qū)別: 
    還是讓我們看一下windef.h中NULL的定義:

#ifndef  NULL 
#ifdef  __cplusplus//這個(gè)是指示是用C++來(lái)編譯程序 
#define  NULL  0 
#else 
#define  NULL  ((void  *)0) 
#endif 
#endif 

所以說(shuō):它們沒(méi)有區(qū)別,只不過(guò)在C里面會(huì)做一個(gè)強(qiáng)制類(lèi)型轉(zhuǎn)換。

相關(guān)文章

  • C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)

    C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++中調(diào)用復(fù)制(拷貝)函數(shù)的三種情況總結(jié)

    C++中調(diào)用復(fù)制(拷貝)函數(shù)的三種情況總結(jié)

    這篇文章主要介紹了C++中調(diào)用復(fù)制(拷貝)函數(shù)的三種情況總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語(yǔ)言文件操作函數(shù)freopen詳細(xì)解析

    C語(yǔ)言文件操作函數(shù)freopen詳細(xì)解析

    替換一個(gè)流,或者說(shuō)重新分配文件指針,實(shí)現(xiàn)重定向。如果stream流已經(jīng)打開(kāi),則先關(guān)閉該流。如果該流已經(jīng)定向,則freopen將會(huì)清除該定向。此函數(shù)一般用于將一個(gè)指定的文件打開(kāi)一個(gè)預(yù)定義的流:標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出或者標(biāo)準(zhǔn)出錯(cuò)
    2013-10-10
  • C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實(shí)現(xiàn)約瑟夫環(huán)

    C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實(shí)現(xiàn)約瑟夫環(huán)

    這篇文章主要介紹了C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實(shí)現(xiàn)約瑟夫環(huán)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • opencv3.0識(shí)別并提取圖形中的矩形的方法

    opencv3.0識(shí)別并提取圖形中的矩形的方法

    這篇文章主要介紹了opencv3.0識(shí)別并提取圖形中的矩形的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 解析C++函數(shù)的默認(rèn)參數(shù)和占位參數(shù)及較之C語(yǔ)言的拓展

    解析C++函數(shù)的默認(rèn)參數(shù)和占位參數(shù)及較之C語(yǔ)言的拓展

    這篇文章主要介紹了C++中的默認(rèn)參數(shù)和占位參數(shù)及較之C語(yǔ)言的拓展,需要的朋友可以參考下
    2016-03-03
  • C/C++淺析鄰接表拓?fù)渑判蛩惴ǖ膶?shí)現(xiàn)

    C/C++淺析鄰接表拓?fù)渑判蛩惴ǖ膶?shí)現(xiàn)

    這篇文章主要介紹了C/C++對(duì)于鄰接表拓?fù)渑判蛩惴ǖ膶?shí)現(xiàn),鄰接表是圖的一種鏈?zhǔn)酱鎯?chǔ)方法,其數(shù)據(jù)結(jié)構(gòu)包括兩部分:節(jié)點(diǎn)和鄰接點(diǎn)
    2022-07-07
  • 基于C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    基于C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 關(guān)于背包問(wèn)題的一些理解和應(yīng)用

    關(guān)于背包問(wèn)題的一些理解和應(yīng)用

    這篇文章主要介紹了關(guān)于背包問(wèn)題的一些理解和應(yīng)用,本文可以說(shuō)是背包問(wèn)題九講的補(bǔ)充、讀后感,需要的朋友可以參考下
    2014-08-08
  • C++淺析類(lèi)與對(duì)象的基礎(chǔ)

    C++淺析類(lèi)與對(duì)象的基礎(chǔ)

    類(lèi)和對(duì)象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語(yǔ)言的合稱(chēng)。對(duì)象是對(duì)客觀(guān)事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。類(lèi)是一種抽象的數(shù)據(jù)類(lèi)型;變量就是可以變化的量,存儲(chǔ)在內(nèi)存中—個(gè)可以擁有在某個(gè)范圍內(nèi)的可變存儲(chǔ)區(qū)域
    2022-05-05

最新評(píng)論

新干县| 东城区| 曲沃县| 萨迦县| 磐安县| 湘乡市| 保康县| 北川| 青海省| 米脂县| 麻栗坡县| 新民市| 苗栗市| 磐安县| 东莞市| 游戏| 军事| 彭泽县| 城固县| 安平县| 安阳县| 灌阳县| 光山县| 如皋市| 上思县| 满洲里市| 汾阳市| 龙州县| 郴州市| 苍南县| 阿拉善盟| 吐鲁番市| 乌拉特中旗| 黄冈市| 峨眉山市| 上杭县| 承德县| 洛南县| 依安县| 海口市| 平舆县|