C++代码打印奇怪的值

C++ code printing strange values

本文关键字:代码 打印 C++      更新时间:2023-10-16

我遇到了一个非常愚蠢但奇怪的问题。当我尝试编译和运行以下代码时,我的编译器正在打印"ggl",但我认为它不应该。奇怪的是,在做了这么多编程之后,我被困在这里。问题到底出在哪里?有人可以帮我吗?提前感谢!!

#include <iostream>
using namespace std;
int main() {
    int t=8;
    if(1<t<5){
        cout<<"ggl";
    }
    //cout<<aa;
    return 0;
}

此行不执行您认为的功能

 if(1<t<5)

你不得不说

 if (1 < t && t < 5)

第一个版本说

if ((1 < t) < 5)

其计算结果为

if (true < 5)
if (1 < 5)

这总是正确的。

你的if条件有效地说if ((1 < t) < 5),这总是正确的,因为(1 < t)要么是 1 要么是 0(1 < 8计算结果为 1)。

由于链式比较(通常)在C++中不起作用,因此您需要以不同的方式检查条件:

if (1 < t && t < 5) {
    cout << "ggl";
}

if(1<t<5)

不做你认为它做的事情。它不确定t是否介于 1 和 5 之间。你想要

if ((1<t) && (t<5))

它实际做的是取(1<t)值(如果1<t,则为 1,否则为 0),然后查看该值是否小于 5,它总是如此。