C++中的逻辑错误

biw*_*biw 1 c++ arrays

我在C++中有以下代码:

(哪里arr.data[i-1] = 20; arr.date[i] = 30; payload = 50;)

if (i > 0 && arr.data[i-1] < payload < arr.data[i]) {
    cout << arr.data[i-1] << " < " << payload << " < " << arr.data[i] << "\n";
}
Run Code Online (Sandbox Code Playgroud)

我收到的声明是

20 < 50 < 30
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Bil*_*nch 8

你不能像这样链接比较运算符:

if (i > 0 && arr.data[i-1] < payload < arr.data[i]) {
Run Code Online (Sandbox Code Playgroud)

相反,它应该是这样的:

if (i > 0 && arr.data[i-1] < payload && payload < arr.data[i]) {
Run Code Online (Sandbox Code Playgroud)

请注意,您可以在代码中的几个位置执行此操作.

  • 我听说只有一种语言允许这样的链接比较.大多数人不会接受这一点 (3认同)
  • @Ben:"a <b <c"将首先单独评估"a <b",这会导致"true <c"或"false <c".它们都不是你想要的. (2认同)