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.
广告