C++ 布爾類(lèi)型和引用

1漫试、布爾類(lèi)型

C++中的布爾類(lèi)型

  • C++在C語(yǔ)言的基本類(lèi)型系統(tǒng)之上增加了bool
  • C++中的bool可取的值只有truefalse
  • 理論上bool之占用一個(gè)字節(jié)

注意:

true代表真值糯景,編譯器內(nèi)部用1來(lái)表示

false代表非真值嘲恍, 編譯器內(nèi)部用0來(lái)表示

C語(yǔ)言中:

用整型值來(lái)代替bool類(lèi)型胀滚,常用0:flase, 1:true

C++做了類(lèi)型增強(qiáng),增加了一個(gè)非常嚴(yán)謹(jǐn)?shù)?code>bool類(lèi)型谷遂,truefalse作為關(guān)鍵字存在垫言。

在C++的布爾類(lèi)型中粘昨,bool類(lèi)型只有truefalse兩個(gè)值壹哺,C++編譯器會(huì)將非0值轉(zhuǎn)換為true抄伍, 0值轉(zhuǎn)換為false

bool b = 0;
printf("b = %d\n", b);
b++;
printf("b = %d\n", b);
b = b - 3;
printf("b = %d\n", b);
// bool類(lèi)型是否支持?jǐn)?shù)學(xué)運(yùn)算管宵?

其實(shí)在C++語(yǔ)言中截珍,布爾類(lèi)型的內(nèi)部實(shí)現(xiàn)是用一個(gè)字節(jié)的整型來(lái)實(shí)現(xiàn)的,bool類(lèi)型支持?jǐn)?shù)學(xué)運(yùn)算箩朴,編譯器會(huì)在內(nèi)部進(jìn)行調(diào)整岗喉,非0為true,0 為 false

代碼試驗(yàn):

#include <stdio.h>

int main(int argc, char *argv[])
{
    bool b = false;
    int a = b;
    
    printf("sizeof(b) = %d\n", sizeof(b));
    // sizeof(b) = 1, bool類(lèi)型占一個(gè)字節(jié)
    printf("b = %d, a = %d\n", b, a);   0
    // b = 0, a = 0
    
    b = 3;  // b = 1
    a = b;  // a = 1
    
    printf("b = %d, a = %d\n", b, a);
    
    b = -5; // b = 1
    a = b;  // a = 1
    
    printf("b = %d, a = %d\n", b, a);
    
    a = 10; // a = 10
    b = a;  // b = 1
    
    printf("a = %d, b = %d\n", a, b);
    
    a = 0;  // a = 0
    b = a;  // b = 0
    
    printf("a = %d, b = %d\n", a, b);
    
    return 0;
}

布爾類(lèi)型是C++中的基本數(shù)據(jù)類(lèi)型

  • 可以定義bool類(lèi)型的全局變量

  • 可以定義bool類(lèi)型的常量

  • 可以定義bool類(lèi)型的指針

  • 可以定義bool類(lèi)型的數(shù)組

    ......

2炸庞、三目運(yùn)算符

C++中對(duì)三目運(yùn)算符進(jìn)行了升級(jí)

考慮下列代碼是否正確钱床,分別在C語(yǔ)言和C++環(huán)境中編譯運(yùn)行試驗(yàn)

int a = 1;
int b =2;
(a < b ? a : b) = 3;
printf("a = %d, b = %d\n", a, b);
// 在C語(yǔ)言中報(bào)錯(cuò)
// 在C++中,結(jié)果a = 3

三目運(yùn)算符

  • C語(yǔ)言中的三目運(yùn)算符返回的是變量值
    • 不能作為左值使用
  • C++中的三目運(yùn)算符可以直接返回變量本身
    • 既可以作為右值使用埠居,又可以作為左值使用

注意:

三目運(yùn)算符可能返回的值中如果有一個(gè)是常量值查牌,則不能作為左值使用

三目運(yùn)算符只有在所有的可能返回都是變量的時(shí)候才能作為左值使用,一個(gè)常量一個(gè)變量就不能作為左值使用

C++對(duì)三目運(yùn)算符進(jìn)行了這樣的升級(jí)滥壕,意義何在纸颜?

三目運(yùn)算符所有的可能返回都是變量的時(shí)候,返回的就是變量本身绎橘,由此引出了新概念:引用

3懂衩、引用

3.1 變量名

變量是一段實(shí)際連續(xù)存儲(chǔ)空間的別名,程序中通過(guò)變量來(lái)申請(qǐng)并命名存儲(chǔ)空間金踪,通過(guò)變量的名字可以使用存儲(chǔ)空間浊洞。

問(wèn)題:一段連續(xù)的存儲(chǔ)空間只能有一個(gè)別名嗎?


3.2 引用

C++中的引用

  • 在C++中增加了引用的概念

    • 引用可以看作一個(gè)已定義變量的別名
    • 引用的語(yǔ)法:Type& name = var;
    int a = 4;
    int& b = a;  // b作為a的別名
    b = 5;      // 操作b就是操作a
    

    注意:

    普通引用在定義時(shí)必須用同類(lèi)型的變量進(jìn)行初始化胡岔。

  • C++對(duì)三目運(yùn)算符做了些啥法希?

    • 當(dāng)三目運(yùn)算符的可能返回都是變量時(shí),返回的是變量引用
    • 當(dāng)三目運(yùn)算符的可能返回中有常量時(shí)靶瘸,返回的是
    int a = 1;
    int b = 2;
    (a < b ? a : b) = 3;    // ok苫亦,返回a或b的引用,可作為左值
    (a < b ? 1 : b) = 4;    // err怨咪,返回1或b的值屋剑,不能作為左值
    

4、小結(jié)

bool類(lèi)型是C++新增加的基礎(chǔ)類(lèi)型

bool類(lèi)型的值只能是truefalse

C++中的三目運(yùn)算符可作為左值使用

C++中的引用可以看作變量的別名來(lái)使用

三目運(yùn)算符的可能返回都是變量時(shí)诗眨,返回的是引用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唉匾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巍膘,老刑警劉巖厂财,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異峡懈,居然都是意外死亡璃饱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)肪康,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)荚恶,“玉大人,你說(shuō)我怎么就攤上這事磷支●伤Γ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵齐唆,是天一觀的道長(zhǎng)嗤栓。 經(jīng)常有香客問(wèn)我,道長(zhǎng)箍邮,這世上最難降的妖魔是什么茉帅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮锭弊,結(jié)果婚禮上堪澎,老公的妹妹穿的比我還像新娘。我一直安慰自己味滞,他們只是感情好樱蛤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著剑鞍,像睡著了一般昨凡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚁署,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天便脊,我揣著相機(jī)與錄音,去河邊找鬼光戈。 笑死哪痰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的久妆。 我是一名探鬼主播晌杰,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼筷弦!你這毒婦竟也來(lái)了肋演?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惋啃,沒(méi)想到半個(gè)月后哼鬓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體监右,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡边灭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了健盒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绒瘦。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扣癣,靈堂內(nèi)的尸體忽然破棺而出惰帽,到底是詐尸還是另有隱情,我是刑警寧澤父虑,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布该酗,位于F島的核電站,受9級(jí)特大地震影響士嚎,放射性物質(zhì)發(fā)生泄漏呜魄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一莱衩、第九天 我趴在偏房一處隱蔽的房頂上張望爵嗅。 院中可真熱鬧,春花似錦笨蚁、人聲如沸睹晒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伪很。三九已至,卻和暖如春奋单,著一層夾襖步出監(jiān)牢的瞬間是掰,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工辱匿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留键痛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓匾七,卻偏偏與公主長(zhǎng)得像絮短,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昨忆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容