【问题标题】:Incorrect logic in C++ [duplicate]C ++中的逻辑不正确[重复]
【发布时间】:2014-11-15 21:25:09
【问题描述】:

我在 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

我做错了什么?

【问题讨论】:

标签: c++ arrays


【解决方案1】:

C++ 中的关系运算符是左关联的,因此实现是这样读取它的:

(i > 0 && arr.data[i-1] TRUE = 1(布尔逻辑)

所以, (1 TRUE

【讨论】:

    【解决方案2】:

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

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

    相反,它应该是这样的:

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

    请注意,您在代码中的几个地方执行此操作。

    【讨论】:

    • 谢谢!我来自其他语言,您可以将比较串在一起。
    • @Ben:“a
    • 我只听说过一种语言允许这样的链接比较。大多数人不会接受这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多