我有一组检查来执行某些任务。
// tempDouble is a (double), hour is an int
if (tempDouble > 60.0 && (hour >= 6 || hour <= 17)) { //CLEAR
NSLog(@"CLEAR");
}
else if (tempDouble > 60.0 && (hour < 6 || hour > 17)) { //NIGHT_CLEAR
NSLog(@"NIGHT_CLEAR");
}
else if (tempDouble <= 60.0 && (hour >= 6 || hour <= 17)) { //CLOUDY
NSLog(@"CLOUDY");
}
else if (tempDouble > 60.0 && (hour < 6 || hour > 17)) { //NIGHT_CLOUDY
NSLog(@"NIGHT_CLOUDY");
}
例如,当我的温度为76.3和1小时时,我希望它跳到NIGHT_CLEAR
,但实际上它会转到CLEAR
。我是否错误地进行了比较?
提前感谢这个简单的问题!
答案 0 :(得分:6)
(hour >= 6 || hour <= 17)
总是如此。所有实数都大于或等于6或小于或等于17(有些都是)。我想你想要:
(hour >= 6 && hour <= 17)
这同样适用于CLOUDY。
答案 1 :(得分:1)
||
的某些&&
可能会比if (tempDouble > 60.0 && (hour >= 6 && hour <= 17)) { //CLEAR
NSLog(@"CLEAR");
}
else if (tempDouble > 60.0 && (hour < 6 && hour > 17)) { //NIGHT_CLEAR
NSLog(@"NIGHT_CLEAR");
}
else if (tempDouble <= 60.0 && (hour >= 6 || hour <= 17)) { //CLOUDY
NSLog(@"CLOUDY");
}
else if (tempDouble > 60.0 && (hour < 6 || hour > 17)) { //NIGHT_CLOUDY
NSLog(@"NIGHT_CLOUDY");
}
更好。
也许你想要的是......
{{1}}