jrvf 发表于 2013-11-4 09:34:59

求助一小问题

#include <stdio.h>

void main()
{
        int score;
        scanf("%d",&score);
        if (score < 60)
                printf("The result is C\n");
        else if (60 <= score <= 90)
                printf);
        else
                printf("The result is A\n");
}运行时输入大于90的数,为何出现的是“The result is B\n”?一直想不通,请鱼油们指点。

北林之中 发表于 2013-11-4 09:35:00

中间那个else if语句有问题
#include <stdio.h>

void main()
{
      int score;
      scanf("%d",&score);
      if (score < 60)
                printf("The result is C\n");
      else if (60 <= score&&score <= 90)
                printf("The result is B\n");
      else
                printf("The result is A\n");
}

duzhongjieqiji 发表于 2013-11-4 10:07:29

楼上正解,这个和编译器处理有关系,本身代码有问题,else if (60 <= score <= 90) 如果编译器从左边执行的话,输入90因为90>60所以 60<score为真是1,1<=90成立,所以会有你那个结果!如果从右边执行,正好相反!

jrvf 发表于 2013-11-4 10:40:20

北林之中 发表于 2013-11-4 09:56 static/image/common/back.gif
中间那个else if语句有问题
#include



请问下60 <= score <= 90 跟 60 <= score&&score <= 90 有什么区别?60 <= score&&score <= 90这条语句能理解。

duzhongjieqiji 发表于 2013-11-4 10:47:51

60 <= score <= 90这个写法本身就是错的 ,编译器不认识!是你数学的印象吧!呵呵 !

乱闯 发表于 2013-11-4 11:40:52

{:1_1:}LZ数学应该很好

jrvf 发表于 2013-11-4 12:08:19

duzhongjieqiji 发表于 2013-11-4 10:47 static/image/common/back.gif
60

原来如此,懂了。Thank you
页: [1]
查看完整版本: 求助一小问题