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


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

  • 第一个操作数隐式转换为bool类型。在继续之前,它将被评估,并且所有副作用都将完成。
  • 如果第一个操作数计算结果为真 (1),则评估第二个操作数。
  • 如果第一个操作数计算结果为假 (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.

更新于:2020年6月18日

227 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告