鱼C论坛

 找回密码
 立即注册
查看: 854|回复: 4

[已解决]if 和 else if

[复制链接]
发表于 2020-10-31 11:13:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在C语言中,if和else if有什么区别?我觉得if连续排下来好像和else 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,让自己的程序逻辑易懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-31 11:15:54 | 显示全部楼层
else if 是在 if 条件不成立后判断的,else if 必须跟在 if 后面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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,让自己的程序逻辑易懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-31 13:02:18 | 显示全部楼层
3楼正解

我再给翻译一下 if和else if

if            如果。。。

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

else         其他的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 的分段判断,重要的是,各个分段的条件必须能够无缝拼接,而且,彼此之间互不重叠。这样,成绩就会 "自动" 对号入座。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 20:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表