C++ 无法弄清楚为什么它会给出误报(新手)

C++ Can't figure out why its giving false positive (newbie)

嘿,所以我最近开始学习 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 {

    };
}

这个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";
}

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

术语

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

总是正确的。对于 [-infinite,erg] 范围内的每个 inp 值,术语 inp <= erg 都为真。对于 [erg,infinite] 范围内的每个 inp 值,术语 inp >= erg 都为真。因此,对于 [-infinite,infinite] 范围内的每个 inp 值,项 inp <= erg || inp >= erg 都为真。

祝你在 C++ 中玩得开心。

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