首页
/
每日頭條
/
科技
/
c語言三目運算符例子
c語言三目運算符例子
更新时间:2025-05-01 07:51:29

c語言三目運算符例子(CC編程知識)1

預測以下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;

}

有人希望兩個打印語句的輸出都一樣。但是,輸出将是

First character 1

Second character 49

為什麼第二個語句打印49?閱讀三元表達式。

c語言三目運算符例子(CC編程知識)2

三元運算符(C / C )

三元運算符的格式如下:

exp 1?exp 2:exp 3

表達式exp 1将始終被求值。exp 2exp 3的執行取決于exp 1的結果。如果exp 1的結果非零,則将評估exp 2,否則将評估exp 3

副作用:

exp 1的任何副作用都将在執行exp 2exp 3之前立即進行評估和更新。換句話說,在三元表達式的條件評估之後存在一個序列點。如果exp 2exp 3有副作用,則僅評估其中之一。

返回類型:

這是另一個有趣的事實。三元運算符具有返回類型。返回類型取決于exp 2, 根據常規\重載轉換規則,exp 3可轉換為exp 2。如果它們不可轉換,則編譯器将引發錯誤。請參閱以下示例,

以下程序編譯沒有任何錯誤。三元表達式的返回類型應為float(如exp 2的返回類型),而exp 3(即字面 零-int類型)可以隐式轉換為float。

#include <iostream>

using namespace std;

int main()

{

int test = 0;

float fvalue = 3.111f;

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

return 0;

}

以下程序将無法編譯,因為編譯器無法找到三進制表達式的返回類型,或者在exp 2(char數組)和exp 3(int)之間不存在隐式轉換。

#include <iostream>

using namespace std;

int main()

{

int test = 0;

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

return 0;

}

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

#include <iostream>

using namespace std;

int main()

{

int test = 0;

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

return 0;

}

我們可以觀察到将exp 2視為輸出類型,并且exp 3将在運行時轉換為exp 2。如果轉換是隐式的,則編譯器将插入存根進行轉換。如果轉換是顯式的,則編譯器将引發錯誤。如果有任何編譯器未捕獲到此類錯誤,則程序可能會在運行時失敗。

c語言三目運算符例子(CC編程知識)3

最佳實踐:

C 類型系統的強大功能避免了此類錯誤。确保表達式exp 2exp 3返回相同的類型或至少安全可轉換的類型。

希望對你有幫助~

另外如果你想更好地提升你的編程能力,學好C語言C 編程!彎道超車,快人一步!筆者這裡或許可以幫到你~

編程學習書籍分享:

c語言三目運算符例子(CC編程知識)4

編程學習視頻分享:

c語言三目運算符例子(CC編程知識)5

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

C語言C 編程學習交流圈子,點擊下方【了解更多】獲取更多學習資料幫助你學習成長~

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
微信怎麼找回聊天記錄
微信怎麼找回聊天記錄
1、可通過微信修複工具修複,需在微信搜索框中搜索“recover”。在搜索結果的“微信修複工具”中點...
2025-05-01
藍牙雙模是什麼意思
藍牙雙模是什麼意思
藍牙雙模是指其支持傳統藍牙的BasicRate(BR)和增強數據率(EDR)工作,也支持最新的低功耗(LE)标準。藍牙4.0是雙模标準的開始,在包含的傳統藍牙的技術标準外,增加了一個低功耗藍牙技術(LE),分别适用于不同的應用場景。傳統藍牙也被稱之為經典藍牙,早在之前的1.0版本開始到+EDR等基礎上發展完善,而低功耗藍牙是Nokia的Wibree标準上形成的另一種技術标準。所以雙模藍牙設備既支持
2025-05-01
手機文件管理的照片删了怎麼找回
手機文件管理的照片删了怎麼找回
1、首先,手機應用上去下載一個APP手機照片恢複大師”,并且安裝好;2、安裝好後,注冊完後,打開APP,看到界面上有聯系人恢複”通話記錄恢複”短信恢複”微信恢複”和圖片恢複”等功能區,根據需要點擊圖片恢複”即可;3、點擊之後幾進入掃描過程,等待掃描。不要終止掃描,一定要等掃描完成;4、掃描完成後,即可看到掃描出某條記錄”,右上角可以全選”,也可以點擊進行勾選恢複。選擇完畢後,點擊下方恢複數據”;5
2025-05-01
dwg轉pdf方法
dwg轉pdf方法
軟件轉換,借助軟件:迅捷PDF轉換器,打開迅捷PDF轉換器,然後在“CAD轉換”頁面中,點擊“CAD...
2025-05-01
計算器e是什麼意思
計算器e是什麼意思
E是exponent,表示以10為底的指數。此格式用指數表示法顯示數字,以E+n替換部分數字,其中E(代表指數)表示将前面的數字乘以10的n次幂。例如,用2位小數的“科學記數”格式表示12345678901,結果為1.23E+10,即1.23乘以10的10次幂。計算器是近代人發明的可以進行數字運算的機器。現代的電子計算器能進行數學運算的手持電子機器,擁有集成電路芯片,但結構
2025-05-01
Copyright 2023-2025 - www.tftnews.com All Rights Reserved