C++中的IF嵌套

Bia*_*ach 1 c++ if-statement nested

嘿,只是通过一些教科书示例来介绍我的 C++ 入门课程,如果有人能澄清为什么以下代码产生 51 的输出(我希望它不会产生任何输出),我将非常感激,非常感谢!:

#include <iostream>
using namespace std;

int main()
{
  constexpr int a{9};
  constexpr int b{1};
  constexpr int c{5};

  if (a < b < c)
    if (c > b > a)
      if (a > c) cout << 91;
      else cout << 19;
    else
      if (b < c) cout << 51;
      else cout << 15;
  else 
    if (b < a < c)
      if (a < c) cout << 95;
      else cout << 59;
    else
      if (b < c) cout << 57;
      else cout << 75;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

cig*_*ien 8

看来你期待这样的表达:

if (a < b < c)
Run Code Online (Sandbox Code Playgroud)

trueif a, b, 和c是递增的。但实际发生的是表达式变成:

if ((a < b) < c)
Run Code Online (Sandbox Code Playgroud)

要么:

if (0 < c)
// or
if (1 < c)
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,这可能都不是您想要的。事实上,没有充分的理由去写上面的表达式。

如果要检查变量是否在增加,则需要编写如下内容:

if (a < b && b < c)
Run Code Online (Sandbox Code Playgroud)