首页
/
每日頭條
/
科技
/
c語言三目運算符例子
c語言三目運算符例子
更新时间:2025-02-22 03:21:25

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
推荐阅读
什麼叫快剪
什麼叫快剪
2009年10月20日,360安全中心高調發布了永久免費的360殺毒1.0正式版。據稱,這是全球範圍内首款真正永久、徹底免費的殺毒軟件。360免費殺毒一經發布,立刻在殺毒市場上引起軒然大波,在360的示範效應下,諾頓、趨勢科技、賽門鐵克、卡...
2025-02-22
大衆邁騰大燈燈泡什麼型号
大衆邁騰大燈燈泡什麼型号
大衆邁騰大燈燈泡什麼型号?大衆新邁騰遠、近光燈燈泡型号均為H7,我來為大家科普一下關于大衆邁騰大燈燈泡什麼型号?以下内容希望對你有幫助!大衆邁騰大燈燈泡什麼型号大衆新邁騰遠、近光燈燈泡型号均為H7。H7燈泡的售價普遍為30-50元/個。H7...
2025-02-22
植物大戰僵屍online三星植物
植物大戰僵屍online三星植物
植物大戰僵屍online三星植物?植物大戰僵屍全明星冒險系統介紹,今天小編就來聊一聊關于植物大戰僵屍online三星植物?接下來我們就一起去研究一下吧!植物大戰僵屍online三星植物植物大戰僵屍全明星冒險系統介紹點擊主界面的1、2、3等關...
2025-02-22
手機共享界面投屏到電腦上
手機共享界面投屏到電腦上
很多時候,我們要在電腦和手機上互傳文件或者做大屏演示。而手機屏幕又太小,所以我們就需要做投屏的操作。将手機投屏到電腦或者電視上!現在很多市面上的軟件不僅要收費,操作起來也是超級的繁瑣。今天就給大家分享一個軟件的操作方法。不僅免費,還超級好用...
2025-02-22
一鍵開始打印機共享
一鍵開始打印機共享
共享打印機安裝的最簡便方法通過pingIP命令(ping命令是用于檢查網絡聯通狀況的計算機命令。它可以與不同的參數配合使用以達到不同的方式檢查網絡的目的。)查看共享打印機和安裝本機的網絡是否互通,具體操作:快捷鍵首先按鍵盤'WinR...
2025-02-22
Copyright 2023-2025 - www.tftnews.com All Rights Reserved