条件运算符在GUN C中的特殊用法.

在阅读内核源码的时候,发现了条件表达式的奇怪用法,一时没有反应过来。下面的内容是从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;




原文地址:https://www.cnblogs.com/3me-linux/p/6434598.html