我有一个非常愚蠢但奇怪的问题。当我试图编译并运行以下代码时,我的编译器正在打印“ggl”,但我认为它不应该。奇怪的是,经过这么多的编程,我被困在这里。究竟是什么问题?有人可以帮帮我吗?在此先感谢!!
#include <iostream>
using namespace std;
int main() {
int t=8;
if(1<t<5){
cout<<"ggl";
}
//cout<<aa;
return 0;
}
答案 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,它始终是。