条件运算符 ? : 是C语言中唯一的三元运算符。

? :条件运算符语法

expression1 ? expression2 : expression3

首先评估expression1。如果其值为true,那么将评估expression2,并忽略expression3。如果expression1评估为false,则将评估expression3,而expression2将被忽略。结果将是expression2或expression3的值,具体取决于它们中的哪一个结果为True。

条件运算符从右到左关联。

示例

/* Find max(a, b): */
max = ( a > b ) ? a : b;
/* Convert small letter to capital: */
/* (no parentheses are actually necessary) */
c = ( c >= 'a' && c <= 'z' ) ? ( c - 32 ) : c;

条件运算符规则

  • expression1必须是标量表达式;expression2和expression3必须遵守以下规则之一。
  • 这两个表达式都必须是算术类型的。
  • expression2和expression3进行通常的算术转换,决定结果的类型。
  • 两个表达式都必须是void类型。结果类型为void。