不改变if语句中的条件我需要通过赋予i任何值来打印else语句?

时间:2018-05-31 17:47:55

标签: c if-statement

#include <stdio.h>

int main() {
    int i =-1;
    if(1< i <10){
        printf("1");
    } else {
        printf("2");
    }
}
expected output: 2
present output: 1

2 个答案:

答案 0 :(得分:3)

在布尔表达式1 < i < 10中从左到右进行评估,1 < i为true(1)或false(0);因此,在随后的比较中,无论0 < 10的值如何,1 < 10i都始终为真。

因此,不能在不改变(可能纠正?)条件的情况下获得输出2

答案 1 :(得分:1)

替换为以下内容:

if ((i > 1) && (i < 10)) {

然后你可以通过向i提供1到10之间严格包含的值(请建议一个更好的词)来触发else块。

由于运营商优先级,在不改变条件的情况下无法实现此目的。 (在每种情况下,整个条件都会变为真。)