【发布时间】:2020-05-21 17:29:45
【问题描述】:
我试图了解三元运算正在做什么来给我这个输出。我希望条件会在 true == false 评估为 false 但 return_value 的结果在此代码中为 true 时短路。
#include <iostream>
int main()
{
bool return_value = true == false &&
true == false &&
false ? (true == false) : true; // add parens to see expected output (false ? (true == false) : true);
std::cout << std::boolalpha << return_value << std::endl;
// expected output: false
// actual output : true
} }
如果我在最后一个条件 (false ? (true == false) : true) 周围加上括号,那么我会得到我期望的输出。
是否存在我误解的操作顺序?
【问题讨论】:
-
en.cppreference.com/w/cpp/language/operator_precedence 三元运算符具有最低优先级之一。 (低于
==和&&,这解释了这里的行为。)
标签: c++ operator-precedence conditional-operator ternary