最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程知識(shí):運(yùn)算符(七)丨三元/三目運(yùn)算符知識(shí)詳解

2021-01-18 22:23 作者:C語(yǔ)言編程__Plus  | 我要投稿



預(yù)測(cè)以下C ++程序的輸出。

#include <iostream>

using namespace std;

int main()

{

???int test = 0;

???cout << "First ?character "<< '1'<< endl;

???cout << "Second character "<< (test ? 3 : '1') << endl;

???return 0;

}

有人希望兩個(gè)打印語(yǔ)句的輸出都一樣。但是,輸出將是

First ?character 1

Second character 49

為什么第二個(gè)語(yǔ)句打印49?閱讀三元表達(dá)式。


三元運(yùn)算符(C / C ++)

三元運(yùn)算符的格式如下:

exp?1?exp?2:exp?3

表達(dá)式exp?1將始終被求值。exp?2和exp?3的執(zhí)行取決于exp?1的結(jié)果。如果exp?1的結(jié)果非零,則將評(píng)估exp?2,否則將評(píng)估exp?3。

副作用:

exp?1的任何副作用都將在執(zhí)行exp?2或exp?3之前立即進(jìn)行評(píng)估和更新。換句話說(shuō),在三元表達(dá)式的條件評(píng)估之后存在一個(gè)序列點(diǎn)。如果exp?2或exp?3有副作用,則僅評(píng)估其中之一。

返回類型:

這是另一個(gè)有趣的事實(shí)。三元運(yùn)算符具有返回類型。返回類型取決于exp?2,?根據(jù)常規(guī)\重載轉(zhuǎn)換規(guī)則,exp?3可轉(zhuǎn)換為exp?2。如果它們不可轉(zhuǎn)換,則編譯器將引發(fā)錯(cuò)誤。請(qǐng)參閱以下示例,

以下程序編譯沒(méi)有任何錯(cuò)誤。三元表達(dá)式的返回類型應(yīng)為float(如exp?2的返回類型),而exp?3(即字面?零-int類型)可以隱式轉(zhuǎn)換為float。

#include <iostream>

using namespace std;

int main()

{

???int test = 0;

???float fvalue = 3.111f;

???cout << (test ? fvalue : 0) << endl;

?? return 0;

}

以下程序?qū)o(wú)法編譯,因?yàn)榫幾g器無(wú)法找到三進(jìn)制表達(dá)式的返回類型,或者在exp?2(char數(shù)組)和exp?3(int)之間不存在隱式轉(zhuǎn)換。

#include <iostream>

using namespace std;

int main()

{

???int test = 0;

???cout << test ? "A String": 0 << endl;

???return 0;

}

以下程序*可能*編譯,但在運(yùn)行時(shí)失敗。三元表達(dá)式的返回類型綁定到類型(char *),但是表達(dá)式返回int,因此程序失敗。從字面上看,該程序嘗試在運(yùn)行時(shí)在第0個(gè)地址打印字符串。

#include <iostream>

using namespace std;

int main()

{

???int test = 0;

???cout << (test ? "A String": 0) << endl;

???return 0;

}

我們可以觀察到將exp?2視為輸出類型,并且exp?3將在運(yùn)行時(shí)轉(zhuǎn)換為exp?2。如果轉(zhuǎn)換是隱式的,則編譯器將插入存根進(jìn)行轉(zhuǎn)換。如果轉(zhuǎn)換是顯式的,則編譯器將引發(fā)錯(cuò)誤。如果有任何編譯器未捕獲到此類錯(cuò)誤,則程序可能會(huì)在運(yùn)行時(shí)失敗。


最佳實(shí)踐:

C ++類型系統(tǒng)的強(qiáng)大功能避免了此類錯(cuò)誤。確保表達(dá)式exp?2和exp?3返回相同的類型或至少安全可轉(zhuǎn)換的類型。

希望對(duì)你有幫助~

另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車(chē),快人一步!筆者這里或許可以幫到你~

UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

編程學(xué)習(xí)書(shū)籍分享:


編程學(xué)習(xí)視頻分享:



C/C++編程知識(shí):運(yùn)算符(七)丨三元/三目運(yùn)算符知識(shí)詳解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平陆县| 乌海市| 池州市| 龙江县| 汉源县| 四子王旗| 佛学| 济宁市| 格尔木市| 高邑县| 龙南县| 昌江| 巴彦淖尔市| 体育| 固阳县| 盐亭县| 礼泉县| 监利县| 紫金县| 双城市| 进贤县| 和田县| 城口县| 平舆县| 泌阳县| 日喀则市| 东乡| 本溪市| 武隆县| 三门县| 岚皋县| 阳高县| 桐城市| 赤峰市| 涿鹿县| 伊川县| 邻水| 南陵县| 南京市| 胶州市| 谷城县|