我曾以为在语句中像下面这样使用三元条件运算符是可以的,但事实并非如此。在复杂语句中使用三元条件运算符有什么限制吗?
#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
为什么?
()
进行了检查 :| - BartekPL:
有点特殊,更像是一个分隔符。一旦解析器找到?
运算符,?
和:
之间的任何内容始终是?
运算符的真块,而:
后面的内容则是假块。 - Radosław Cybulski