Printf尽管它不应该

时间:2016-02-25 05:18:51

标签: if-statement printf

我有if语句的这一部分,我得到一个奇怪的输出。

int x = 10;

if(1 < x < 5){
    printf("F\n");
}

为什么打印“F”?逻辑上不是if语句false,因为x大于1但不小于5?

3 个答案:

答案 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){}