只能输出一种结果,这是怎么回事
#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就可以了