为什么 ++y 部分没有执行?

Pap*_*ane -1 c++ if-statement post-increment logical-and

所以这是我提出的问题,我需要告诉输出:

\n
#include <iostream>\nusing namespace std;\nint main()\n{\n    int x = 10;\n    int y = 20;\n    if(x++ > 10 && ++y > 20 ){\n    cout << "Inside if ";\n    } else{\n    cout << "Inside else ";\n    }\n    cout << x << \xe2\x80\x9c \xe2\x80\x9c << y;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

给出的答案是Inside else 11 20我与编译器检查过,这是正确的答案,但根据我的说法,答案应该是Inside else 11 21

\n

为什么会出现这种情况?为什么 ++y 部分不执行?

\n

我也尝试过 y++ 我仍然得到相同的答案。

\n

lor*_*rro 7

当你写 时x++,这意味着两件事:

  • 返回当前
  • 增量x

由于当前值为 且1010 > 10false,因此 后的部分&&(包括++y)不会被评估。

另一种选择是前缀增量,即++x.