首页
/
每日頭條
/
科技
/
c語言三目運算符例子
c語言三目運算符例子
更新时间:2024-09-28 19:15:50

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
推荐阅读
重裝系統創建完賬戶後黑屏
重裝系統創建完賬戶後黑屏
進系統就黑屏?鍵盤注冊表就搞定!一般Windows系統要是有什麼問題,隻要能進得去,基本上都可以解決。如果進不了Windows,隻要電腦硬件沒問題,有個U盤什麼的,也一樣能處理。經常幫同事、朋友修電腦的作者,怕的就是開機進入系統一片伸手不見...
2024-09-28
怎樣把電腦裡的文件發到手機裡面
怎樣把電腦裡的文件發到手機裡面
電腦和手機這兩種電子産品,都是我們日常所使用最廣泛,以及最頻繁的産品,電腦和手機這兩種産品擁有自己獨特的功能,各有各的用處。它們倆在操作過程中都是不可替代的,然而有的時候,由于種種需求,我們需要将電腦上的文件傳到手機上,那麼遇到這種情況時,...
2024-09-28
怎麼把現有的加背景
怎麼把現有的加背景
很多小夥伴在刷短視頻的時候會看到在一些視頻的背景中,還添加了另一個視頻作為背景,讓整個畫面都變得很豐富有意思,那如果大家想要完成這樣的操作要怎麼設置呢?1、我們可以看到以下的所有視頻都添加上了相同的背景視頻,想要完成這樣的操作其實很簡單,下...
2024-09-28
操作系統基礎教程
操作系統基礎教程
《高達對決》是PS4上獨占的一款由BANDAINAMCO發行的高達動作對戰類的遊戲,很多朋友都知道《高達VS高達NEXTPLUS》這款PSP遊戲,而《高達對決》是這個系列的最新作品。而筆者今天也是借此機會為許多高達迷介紹一下這款遊戲的基礎系...
2024-09-28
十款受歡迎的女士洗面奶排行榜
十款受歡迎的女士洗面奶排行榜
現在的美少女美少男們大多更注重護膚保養而忽視了最為重要的第一步——“潔面”,毛孔中的污垢還沒被清除,再昂貴的護膚品也不能吸收。所以隻有用對了潔面産品,減少幹燥避免過敏,不管夏去冬又來,才能水水潤潤地迎接春天!既然清潔肌膚是如此重要的環節,該...
2024-09-28
Copyright 2023-2024 - www.tftnews.com All Rights Reserved