C ++代码打印奇怪的值

时间:2015-01-11 15:45:18

标签: c++

我有一个非常愚蠢但奇怪的问题。当我试图编译并运行以下代码时,我的编译器正在打印“ggl”,但我认为它不应该。奇怪的是,经过这么多的编程,我被困在这里。究竟是什么问题?有人可以帮帮我吗?在此先感谢!!

#include <iostream>
using namespace std;

int main() {
    int t=8;
    if(1<t<5){
        cout<<"ggl";
    }
    //cout<<aa;
    return 0;
}

3 个答案:

答案 0 :(得分:5)

此行不符合您的想法

 if(1<t<5)

你必须说

 if (1 < t && t < 5)

第一个版本说

if ((1 < t) < 5)

评估为

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

总是如此。

答案 1 :(得分:4)

您的if条件有效地说if ((1 < t) < 5),这始终是真的,因为(1 < t)是1或0(1 < 8评估为1)。

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

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

答案 2 :(得分:2)

if(1<t<5)

不符合您的想法。它不能确定t是否介于1和5之间。您需要

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

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