我试图了解三元操作在做什么以提供给我这个输出。我希望条件条件一旦将[[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)
bool return_value = (true == false && true == false && false)
? (true == false)
: true;
而不是
bool return_value = true == false && true == false && (false ? (true == false) : true);