• 文章
  • 条件(或三元)运算符(?
发布
2009 年 9 月 23 日(上次更新:2013 年 4 月 16 日)

条件(或三元)运算符(?:)

评分:3.9/5 (1003 票)
*****
简介

条件运算符是在 C 和 C++(以及其他语言,如 C#)中使用的一种运算符。?: 运算符根据表达式的结果返回两个值之一。

语法

(表达式 1) ? 表达式 2 : 表达式 3
如果表达式 1 的计算结果为 true,则计算表达式 2

如果表达式 1 的计算结果为 false,则改为计算表达式 3

例子

#define MAX(a, b) (((a) > (b)) ? (a) : (b))
在此示例中,计算表达式 a > b。如果它的计算结果为 true,则返回 a。如果它的计算结果为 false,则返回 b。因此,行 MAX(4, 12); 的计算结果为 12。

您可以使用它来选择要分配给变量的值
int foo = (bar > bash) ? bar : bash;
在此示例中,将 'bar' 或 'bash' 分配给 'foo',具体取决于哪个更大。

甚至要将值分配给哪个变量
((bar > bash) ? bar : bash) = foo;
在这里,将 'foo' 分配给 'bar' 或 'bash',同样取决于哪个更大。

注意事项
使用条件运算符时,您可能犯的最常见的错误是忘记运算符优先级。?: 运算符的优先级相当低,因此很容易犯各种错误。

请访问 http://www.difranco.net/cop2220/op-prec.htm 查看 C++ 运算符及其优先级的表(按降序排列)。