前言:
本文为对维基百科上的文章片段翻译整理而得,详见参考文献。
?:是一个三元操作符(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
参考文献: