鱼C论坛

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

[已解决]else if 全改成if有问题吗;

[复制链接]
发表于 2022-10-24 16:12:54 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
                float a,total;
                scanf("%f",&a);
                if(a<=110) total=0.5*a;//改成全部if语句 
                else if(a<=210&&a>110) total=0.5*110+(a-110)*0.55;
                else if(a>210) total=0.5*110+0.55*100+(a-210)*0.7;
                printf("%.2f",total);
                return 0;
}
将所有的else if改为if对结果没影响;else if有什么用,为什么不直接写if???
最佳答案
2022-10-24 16:36:05
本帖最后由 jackz007 于 2022-10-24 16:40 编辑

        if、if、if 和 if 、else if、else if 的区别是,前者是三个独立的判断,不具有排它性,而后者是一个整体,只要满足了其中的一个条件分支,就不会再测试其它的条件分支。
        就本例而言,三个分支的条件本身是闭合且排它的,所以,使用 3 个 if 与使用 1 个 if 2 个 else if 没有任何区别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-24 16:16:30 | 显示全部楼层
本帖最后由 两手空空儿 于 2022-10-24 16:19 编辑

else 是表示除去前面if里的【所有】情况,上面的程序还可以如下写:
#include<stdio.h>
int main()
{
                float a,total;
                scanf("%f",&a);
                if(a<=110)
                         total=0.5*a;
                else if(a<=210) 
                        total=0.5*110+(a-110)*0.55;
                else
                         total=0.5*110+0.55*100+(a-210)*0.7;
                printf("%.2f",total);
                return 0;
}

在else里再加if,又把条件限制的很精确的时候,不用else也没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-24 16:18:34 | 显示全部楼层
在这个代码里确实改成if没啥问题

但是else if 更有逻辑性一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-24 16:21:28 | 显示全部楼层
用else if 减少逻辑运算次数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-24 16:36:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-10-24 16:40 编辑

        if、if、if 和 if 、else if、else if 的区别是,前者是三个独立的判断,不具有排它性,而后者是一个整体,只要满足了其中的一个条件分支,就不会再测试其它的条件分支。
        就本例而言,三个分支的条件本身是闭合且排它的,所以,使用 3 个 if 与使用 1 个 if 2 个 else if 没有任何区别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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