C++三元表達(dá)式詳情
if-else
語句非常常用,但在進(jìn)行一些簡單邏輯判斷的時候,會顯得有些不太簡潔。特別是在初始化的時候,比如我們有一個變量,某種情況下賦值成a,另外的情況下賦值成b。
使用if-else語句寫出來就是:
int cur; if (condition) { cur = a; }else { cur = b; }
這當(dāng)然是沒問題的,只是在大量使用的時候會顯得有些繁瑣。因此C++當(dāng)中推出了三元表達(dá)式對此進(jìn)行簡化,三元表達(dá)式也被稱為條件運(yùn)算符(?:)。
運(yùn)算符的通用格式如下:
condition ? expression1 : expression2;
問號之前的condition
表示一個邏輯運(yùn)算,如果結(jié)果為true
,返回expression1
的值,否則返回expression2
的值。
使用三元表達(dá)式之后,剛才上述的代碼可以改寫成:
int cur = condition ? a : b;
這樣我們就把6行代碼壓縮成了一行,簡化了代碼,但也因此了增加了代碼閱讀的難度。因此只推薦在簡單邏輯判斷下使用三元表達(dá)式,也不推薦嵌套使用,會使得代碼非常難以閱讀。
最后分享一個我個人特別喜歡的使用三元表達(dá)式的場景,就是結(jié)構(gòu)體排序的cmp
函數(shù)。
比如我們有這樣一個場景,需要使用一個結(jié)構(gòu)體存儲兩個值x和y,代表一個坐標(biāo)。我們需要對坐標(biāo)進(jìn)行排序,排序的規(guī)則是x軸小的在前,如果x軸相等,則y小的在前。
struct P { int x, y; }; P arr[1000];
大家都知道,要對這樣的結(jié)構(gòu)體排序,一種做法是我們可以額外實現(xiàn)一個cmp
函數(shù)作為sort
排序函數(shù)的傳參。如果不使用三元表達(dá)式,
那么cmp函數(shù)是這樣的:
bool cmp(const P &a, const P &b) { if (a.x == b.x) { return a.y < b.y; }else { return a.x < b.x; } }
使用三元表達(dá)式的話,整個邏輯只有一行:
bool cmp(const P& a, const P& b) { return a.x == b.x ? a.y < b.y : a.x < b.x; }
到此這篇關(guān)于C++
三元表達(dá)式詳情的文章就介紹到這了,更多相關(guān)C++
三元表達(dá)式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
文章轉(zhuǎn)自:公眾號:Coder梁(ID:Coder_LT)
相關(guān)文章
c++中將二維數(shù)組元素變換為逆向存放的實現(xiàn)代碼
編程將一個二維數(shù)組元素變換為逆向存放,即按元素在內(nèi)存中的物理排列位置,第一個元素變成倒數(shù)第一個元素,第二個元素變成倒數(shù)第二個元素,依此類推2020-11-11vscode+platformIO開發(fā)stm32f4的實現(xiàn)
這篇文章主要介紹了vscode+platformIO開發(fā)stm32f4的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05深入線性時間復(fù)雜度求數(shù)組中第K大數(shù)的方法詳解
本篇文章是對線性時間復(fù)雜度求數(shù)組中第K大數(shù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05