您如何逐步正确解释此代码? (编程新手)

问题描述 投票:0回答:2

我的问题是,我不知道编译器如何正确地通过不同的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。为什么?

c++ if-statement syntax
2个回答
0
投票

此声明是胡说八道:

if (a < b < c)

它将被评估为:

if (a < bool(b < c))

lt / gt / eq / ne / le / ge运算符是二进制的-即,它们需要两个参数。您应该执行以下操作:

if (a < b && b < c)
© www.soinside.com 2019 - 2024. All rights reserved.