你可能在C語言或其他語言都可以看到下面的奇怪符號

bool y = (x == 42) ? true : false;

這個叫做 Ternary Operator (三元運算子),也可以叫做 Conditional Expression (條件表達式)

用這種表示法對於初學者可能會感到非常困惑。即使他們已經習慣了用 {if-else} 的表示法的。我相信這樣做的原因是閱讀和撰寫有點困難,因為在同一行中具有不同的操作可能會令人困惑。

也許以下圖片可以幫助你理解三元運算子。

Source: http://www.c4learn.com/c-programming/c-conditional-operators/

第一個是條件,如果條件為真則執行第二個,如果條件為假則執行第三個。

簡單來說,在外行的術語中,它只是把 {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語句。
  • 優點:程式碼精簡。
  • 缺點:不易閱讀。

最後修改日期: 3 8 月 2019

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。