我的问题是,我不知道编译器如何正确地通过不同的if语句运行,以及为什么在这种情况下他跳过某些语句。
我尝试检查从头到尾的条件是对还是错,从而找到程序的正确输出。但是为什么程序在这里不输出84:
if (a > c) cout << 84;
else cout << 48
完整程序:
int main()
{
constexpr int a{8};
constexpr int b{4};
constexpr int c{1};
if (a < b < c)
if (c > b > a)
if (a > c) cout << 84;
else cout << 48;
else
if (b < c) cout << 14;
else cout << 41;
else
if (b < a < c)
if (a < c) cout << 81;
else cout << 18;
else
if (b < c) cout << 17;
else cout << 71;
return 0;
}
程序仅输出41。为什么?
此声明是胡说八道:
if (a < b < c)
它将被评估为:
if (a < bool(b < c))
lt / gt / eq / ne / le / ge运算符是二进制的-即,它们需要两个参数。您应该执行以下操作:
if (a < b && b < c)