这个代码有逻辑错误,修改下

只能输出一种结果,这是怎么回事

#include 
int main()
{
    int x;
    scanf("%d",&x);
    if(5<=x<=7){
        printf("Summer");
    }else if(8<=x<=10){
        printf("Autumn");
    }else if(2<=x<=4){
        printf("Spring");
    }else if(x==11||x==12||x==1){
        printf("winter");
    }else{
        printf("Error");
    }return 0;
}


语法错误, 5<=x<=7 先计算 5<=x,结果是一个boolean值,条件成立结果是1,条件不成立是0,所以不管x值是多少,最终产生的就是1或者0,再计算(1或者0)<=7是一定成立的

#include <stdio.h>
int main()
{
    int x;
    scanf("%d",&x);
    if(x>=5&&x<=7){
        printf("Summer");
    }else if(x>=8&&x<=10){
        printf("Autumn");
    }else if(x>=2&&x<=4){
        printf("Spring");
    }else if(x==11||x==12||x==1){
        printf("winter");
    }else{
        printf("Error");
    }return 0;
}

像5<=x<=7,这样的代码,与生活中所理解的是不一样的,根据<的左结合性,先判断5<=x,然后结果为0 ,或者1,接着判断0<=7,或者1<=7,肯定为真,所以无论输入什么,都是summer,所有类似的改成 x >= 5 && x <= 7就可以了