前言:
本文爲對維基百科上的文章片段翻譯整理而得,詳見參考文獻。
?:是一個三元操作符(ternary
operator),用來構造一個基本的條件表達式。被稱作條件表達式、內嵌式選擇符或者三元選擇符(
conditional operator, inline
if (iif), or ternary if)。 用法如下:
condition ? value_if_true : value_if_false
如果條件(condition)爲真,則整個表達式的返回值爲value_if_true,否則爲value_if_false。
在GNU對C語言的擴展中,如果第一個參數和第二個參數一樣,則第二個參數可以不用書寫出來。例如:
a = x ? : y;相當於
a = x ? x : y;唯一的區別在於當x是一個表達式時,它只會被運算一次。因此,如果表達式的運算會帶來其他影響,則兩者的差別就大了。
C#和Perl用空接合操作符(null coalescing operator)提供類似的功能:
a = x ?? y;但與GNU對C語言的擴展不同的是,??僅僅判斷x是否爲空(null)。
Python使用or操作符提供相同的功能:
a = x or y
參考文獻: