1

嘿,所以我最近开始学习 C++,但我不明白为什么这个问题一直都是误报。

也许有人可以帮忙?

// [Included stuff]

using namespace std;

int main() {

    int erg = 5;
    int inp;

    cout << "Answer: 3 + 2: "; 
    cin >> inp;

    if (inp == erg) {
        cout << "True!";
    };

    if (inp <= erg || inp >= erg) {
        cout << "False!";
    }
    else {

    };
}

执行代码的图像

4

3 回答 3

1

if (inp <= erg || inp >= erg) 表示小于或等于或大于或等于,因此实际上它总是评估为真。仅使用 <(小于)和/或 > 大于或使用不等于( != ),这样代码会 if (inp < erg || inp > erg) 更简单甚至更简单 if (inp != erg )

于 2020-05-15T13:29:14.937 回答
1

此 if 语句中的条件

if (inp <= erg || inp >= erg) {
    cout << "False!";
}

意味着 inp 可以等于任何数字。那就是条件总是评估为真,所以封闭的语句

    cout << "False!";

被输出。

看来你的意思是

if (inp != erg) {
    cout << "False!";
}

或(这只是因为太复杂而令人困惑)

if (inp < erg || inp > erg) {
    cout << "False!";
}

或者你可以写类似

if (inp == erg) {
    cout << "True!\n";
}
else if ( inp < erg ) {
    cout << "False! Less than the result\n";
}
else {
    cout << "False! Greater than the result\n";
}

如果你有这样的情况

inp == erg

那么它的否定看起来像

!( inp == erg )

或更具可读性

not ( inp == erg )

那是一样的

inp != erg

写就够了

if (inp == erg) {
    cout << "True!\n";
}
else {
    cout << "False!\n";
}

请注意右大括号后的分号是多余的。

于 2020-05-15T11:56:42.657 回答
0

期限

if (inp <= erg || inp >= erg) {
   cout << "False!";
}

总是正确的。该术语对于范围内的inp <= erg每个值都是正确的。该术语对于范围内的每个值都是正确的。所以 tem对于范围内的每个值都是正确的。inp[-infinite,erg]inp >= erginp[erg,infinite]inp <= erg || inp >= erginp[-infinite,infinite]

祝您在 C++ 中编码愉快。

于 2020-05-15T12:10:57.557 回答