?:的特殊用法小記

前言:

本文爲對維基百科上的文章片段翻譯整理而得,詳見參考文獻。


?:是一個三元操作符(ternary operator),用來構造一個基本的條件表達式。被稱作條件表達式、內嵌式選擇符或者三元選擇符(conditional operatorinline 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

參考文獻:

?:操作符


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章