C++ 中的条件三元运算符 (?:)

c++server side programmingprogramming

条件运算符 (?:) 是一个三元运算符(它需要三个操作数)。条件运算符的工作原理如下 −

  • 第一个操作数被隐式转换为 bool。它被评估,并且所有副作用在继续之前都已完成。
  • 如果第一个操作数的评估结果为 true (1),则评估第二个操作数。
  • 如果第一个操作数的评估结果为 false (0),则评估第三个操作数。

条件运算符的结果是评估哪个操作数的结果 - 第二个或第三个。在条件表达式中,仅评估最后两个操作数中的一个。条件运算符的评估非常复杂。上述步骤只是对它的快速介绍。条件表达式具有从右到左的结合性。第一个操作数必须是整数或指针类型。以下规则适用于第二和第三个操作数 −

  • 如果两个操作数属于同一类型,则结果属于该类型。
  • 如果两个操作数都是算术或枚举类型,则执行常规算术转换(在标准转换中介绍)以将它们转换为通用类型。
  • 如果两个操作数都是指针类型,或者一个是指针类型而另一个是计算结果为 0 的常量表达式,则执行指针转换以将它们转换为通用类型。
  • 如果两个操作数都是引用类型,则执行引用转换以将它们转换为通用类型。
  • 如果两个操作数都是 void 类型,则通用类型为 void 类型。
  • 如果两个操作数都是相同的用户定义类型,则通用类型为该类型。
  • 如果操作数具有不同的类型,并且至少有一个操作数具有用户定义类型,则使用语言规则来确定通用类型。(请参阅下面的警告。)

示例

#include <iostream>  
using namespace std;  

int main() {  
   int i = 1, j = 2;  
   cout << ( i > j ? i : j ) << " is greater." << endl;  
}

输出

这将给出输出 −

2 is greater.

相关文章