爱学习的憨憨 发表于 2020-10-31 11:13:47

if 和 else if

在C语言中,if和else if有什么区别?我觉得if连续排下来好像和else if没什么差别,两者的使用范围有什么区别?如何区别使用?

qiuyouzhi 发表于 2020-10-31 11:15:54

else if 是在 if 条件不成立后判断的,else if 必须跟在 if 后面

小甲鱼的铁粉 发表于 2020-10-31 11:22:06

本帖最后由 小甲鱼的铁粉 于 2020-10-31 11:23 编辑

比如这两个程序
if(x>=1)
    printf("x大于1");
else if(x <= 0)
    printf("x小于0");
else
    printf("x大于零小于1");

if(x>=1)
    printf("x大于1");
if(x <= 0)
    printf("x小于0");
if(x>0&&x<1)
    printf("x大于零小于1");
当x=2时,他们的实现效果是一样的,但第一个实际上更快,因为当if达成时后面的else if和else就不再判断了,就直接跳过了;
而第二个程序进入了第一个if后会继续判断剩余的两个if。所有要根据程序的逻辑去使用else if还是if,让自己的程序逻辑易懂{:10_297:}

风过无痕1989 发表于 2020-10-31 13:02:18

3楼正解

我再给翻译一下 if和else if

if            如果。。。

else if      被上面的“如果”排除后,剩下的数据或事件,再“如果。。。”

else         其他的。。。

jackz007 发表于 2020-10-31 13:47:28

本帖最后由 jackz007 于 2020-10-31 14:01 编辑

#include <stdio.h>

int main(void)
{
      int score                                                   ;
      for(;;) {
                printf("请输入你的分数(0 ~ 100):")               ;
                scanf("%d" , & score)                               ;
                if(score >= 0 && score <= 100) break                ;
                else printf("无效分数,请重新输入!\n\n")            ;
      }
      if(score <= 100 && score > 90) printf("你的成绩是 A\n")   ; // 91 - 100
      else if(score <= 90 && score > 80) printf("你的成绩是 B\n") ; // 81 - 90
      else if(score <= 80 && score > 70) printf("你的成绩是 C\n") ; // 71 - 80
      else if(score <= 70 && score > 60) printf("你的成绩是 D\n") ; // 61 - 70
      else printf("你的成绩是 E\n")                               ; //0 - 60
}
      体会一下这个代码会比较清楚一些。
      score 值的变化范围是 0 - 100,根据 score 的实际数值把成绩划分为 A - E 一共 5 个等级,在进行值的判定的时候,使用的就是 if ... else if ... else 的分段判断,重要的是,各个分段的条件必须能够无缝拼接,而且,彼此之间互不重叠。这样,成绩就会 "自动" 对号入座。
页: [1]
查看完整版本: if 和 else if