你可能在C語言或其他語言都可以看到下面的奇怪符號
bool y = (x == 42) ? true : false;
這個叫做 Ternary Operator (三元運算子),也可以叫做 Conditional Expression (條件表達式)
用這種表示法對於初學者可能會感到非常困惑。即使他們已經習慣了用 {if-else} 的表示法的。我相信這樣做的原因是閱讀和撰寫有點困難,因為在同一行中具有不同的操作可能會令人困惑。
也許以下圖片可以幫助你理解三元運算子。

第一個是條件,如果條件為真則執行第二個,如果條件為假則執行第三個。
簡單來說,在外行的術語中,它只是把 {if-else} 語句,搬進一行裡面。
什麼時候該用三元運算子?
就個人而言,我會在設置變量時使用它們,具體取決於狀況。
例如,假設如果x == 42,我希望變量y為真。如果x不等於42, 然後變量y的值為False。那麼,該怎麼寫呢?就像這樣……
bool y = (x == 42) ? true : false;
那麼如果換成 { if-else } 的表示法呢?
bool y;
if (x == 42){
y = true;
}
else {
y = false;
}
看起來就比較長,對吧!用三元運算元乾淨很多!
我們將7行的程式碼濃縮到一行了。
什麼時候該避免使用三元運算元?
三元運算符很棒,但並不總是需要它們。 假設你只想執行一個函數,或者做多個操作……不要使用三元組。你會看不懂!
if (x == 42) {
printf("The boom will explode!");
explode();
}
else {
printf("Nothing Happend");
}
vs.
(x == 42) ? (printf("The boom will explode!", explode()) : (void) (printf("Nothing Happend"));
閱讀下面程式碼的時候,我很想把寫程式的那個人抓出來打一頓。
結論
- 變量設置值時,或者在必要時減少程式碼時,可以使用三元運算元。
- 對其他一律使用if-else語句。
- 優點:程式碼精簡。
- 缺點:不易閱讀。
留言