【发布时间】:2019-11-17 19:23:02
【问题描述】:
我曾经相信在下面这样的语句中使用条件运算符是可以的,但事实并非如此。在复杂语句中使用条件运算符有什么限制吗?
#include <iostream>
using namespace std;
int main() {
int a = 1;
int b = 10;
bool c = false;
int result = a * b + b + c ? b : a;
std::cout << result << std::endl;
return 0;
}
预测输出:21
实际输出:10
为什么?
【问题讨论】:
-
运算符的顺序很重要。
-
是的。我只是检查
():| -
?: 运算符的优先级倒数第二。
-
是的。
:有点特别,更像是一个分隔符。一旦解析器找到?运算符,?和:之间的任何东西对于?运算符来说总是一个真正的块,而在:之后的其余部分是假块。
标签: c++ boolean conditional-operator