条件运算符:?:

expression ? expression : expression

备注

条件运算符 (?:) 是一个三元运算符 (它采用三个操作数)。 条件运算符工作如下所示:

  • 第一个操作数隐式转换为 bool。 它进行计算,然后任何副作用在继续之前完成。

  • 如果第一个操作数计算结果为 true (1),第二个操作数对象进行计算。

  • 如果第一个操作数计算结果为 错误 (0); 第三个操作数计算。

条件运算符的结果是结果操作数计算 —第二个或第三。 只有一个前两个操作数在一个条件表达式计算。

条件表达式具有从右向左的结合性。 第一个操作数必须是整型或指针类型。 下列规则适用于第二个和第三个表达式:

  • 如果两个表达式的类型相同,则结果是该类型。

  • 如果两个表达式都为算术或枚举类型,通常算术转换 (包括在 算术转换) 执行转换通用类型。

  • 如果两个表达式是指针类型,或者一个是指针类型和其他是计算结果为 0 的常数表达式,指针转换执行转换通用类型。

  • 如果两个表达式引用类型,引用转换执行转换通用类型。

  • 如果两个表达式都为类型无效,常见类型是的类型无效。

  • 如果两个表达式都为特定类类型,常见类型是该类类型。

第二个和第三个操作数的任意组合不在上述列表是非法的。 该结果的类型通用类型,因此,它是左值; 如果第二个和第三个操作数是同一类型,它们都是左值。

示例

// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
   int i = 1, j = 2;
   cout << ( i > j ? i : j ) << " is greater." << endl;
}

请参见

参考

C++运算符

运算符优先级和结合性

概念

条件表达式运算符