我在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
我做错了什么?
答案 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