在阅读内核源码的时候,发现了条件表达式的奇怪用法,一时没有反应过来。下面的内容是从wiki转载而来,用作回顾和备忘.
转载链接:https://zh.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E8%BF%90%E7%AE%97%E7%AC%A6
用法
?:
的一般形式为
<表达式1> ? <表达式2> : <表达式3>
其中表达式1为布尔表达式,或真或为假。若表达式1为真,则返回表达式2的值作为整个条件表达式的值。若条件为假,则返回表达式3的值。例如
max =(a > b)? a : b ;
的执行结果就是将a和b中最大值赋给max.
C语言变种
GNU允许C语言省略条件表达式中的表达式2省略,此时表示表达式2与表达式1相同。例如:
a = x ? : y;
等价于
a = x ? x : y;