我有if语句的这一部分,我得到一个奇怪的输出。
int x = 10;
if(1 < x < 5){
printf("F\n");
}
为什么打印“F”?逻辑上不是if语句false,因为x大于1但不小于5?
答案 0 :(得分:3)
在C中,你不能像这样进行比较。表达式1 < x < 5
的评估结果为(1 < x) < 5
:因此对于x = 10
,表达式为(1 < 10) < 5
。 (1 < 10)
为真,C代表值1
,因此表达式缩减为1 < 5
。这总是正确的,如果执行你的printf()。
正如级别999999所说,在C中,您需要明确地将单个比较与&&
和||
结合起来。
答案 1 :(得分:0)
如果您使用的是C,那么您应该将条件分解为两个参数:
if ( x > 1 && x < 5) {
printf("F\n");
}
答案 2 :(得分:-1)
编译器可以将语句解释为:
if(x> 1 || x <5){}