什么是C ++中的三元运算符(?X:Y)?

条件运算符(?:)是三元运算符(需要三个操作数)。条件运算符的工作方式如下-

  • 第一个操作数被隐式转换为bool。在继续之前,需要对其进行评估并完成所有副作用。

  • 如果第一个操作数的值为true(1),则第二个操作数的值为。

  • 如果第一个操作数的计算结果为false,则将计算第三个操作数。

  • 条件运算符的结果是对第二个或第三个操作数求值的结果。在条件表达式中仅对最后两个操作数之一进行求值。条件运算符的评估非常复杂。上面的步骤只是它的快速介绍。条件表达式具有从右到左的关联性。第一个操作数必须是整数或指针类型。 

  • 以下规则适用于第二和第三操作数-

    • 如果两个操作数属于同一类型,则结果为该类型。

    • 如果两个操作数均为算术或枚举类型,则通常为算术 

  • 执行转换(在标准转换中介绍)将其转换为通用类型。

  • 如果两个操作数都是指针类型,或者一个是指针类型,而另一个是求值为0的常量表达式,则将执行指针转换以将它们转换为通用类型。

  • 如果两个操作数都是引用类型,则执行引用转换以将它们转换为通用类型。

  • 如果两个操作数均为void类型,则通用类型为void类型。

  • 如果两个操作数属于同一用户定义类型,则通用类型为该类型。

  • 如果操作数具有不同的类型,并且至少一个操作数具有用户定义的类型,则使用语言规则确定通用类型。(请参阅下面的警告。)

示例

#include <iostream>  
using namespace std;  
int main() {  
   int i = 1, j = 2;  
   cout << ( i > j ? i : j ) << " 更伟大。" << endl;  
}

输出结果

这将给出输出-

2 更伟大。