C ++中的逻辑错误

时间:2014-09-22 00:15:25

标签: 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";
}

我收到的声明是

20 < 50 < 30

我做错了什么?

2 个答案:

答案 0 :(得分:8)

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

if (i > 0 && arr.data[i-1] < payload < arr.data[i]) {

相反,它应该是这样的:

if (i > 0 && arr.data[i-1] < payload && payload < arr.data[i]) {

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

答案 1 :(得分:1)

C ++中的关系运算符是左关联的,所以这就是实现的读取方式:

(i&gt; 0&amp;&amp; arr.data [i-1]&lt; payload)= TRUE = 1 (布尔逻辑)

所以, ( 1 &lt; arr.data [i])= TRUE