关于if和switch两种条件语句的思考

本文对比了if…else与switch…case语句的效率,在不同的分支数量下,switch…case通常在分支较多时表现更优。同时介绍了两者适用场景及灵活性差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际的项目开发中,if和switch同为条件语句,然而很多人并不清楚何时使用if语句,何时使用switch.

switch…case语句和if…else效率比较

switch…case结构中有跳转表,输入的字符只要经过一次比较就可以正确的找到跳转分支,所以平均情况下跳转次数为1.

if…else结构如果有n个分支,分别记为n0,n1,n2,n3,…n(i-1),每个分支出现的概率假设未pi,分别为p0,p1,p2,p3,…p(i-1)。执行第一分支前不需要跳转,其它分支均需要跳转,执行第二个分支之前需要跳转一次,第三个分支需要跳转两次…需要跳转平均跳转的次数s为: \

如果>1,则此时if…case的效率是小于switch…case的,如果它的值小于1,此时if…else的效率高于switch…case。

假设if…else分支的每个分支出现的概率相同,即1/n,上面的跳转次数的期望值可以改写为:\。

如果n=3,则期望的跳转次数为1,刚好与switch…case相同。由此,如果选择分支大于3的时候,选用switch…case结构效率会更高一些,而小于3时,选用if…else结构更好。

总结:在选择分支较多时,选用switch…case结构会提高程序的效率,但switch不足的地方在于只能处理字符或者数字类型的变量,if…else结构更加灵活一些,if…else结构可以用于判断表达式是否成立,比如if(a+b>c),if…else的应用范围更广,switch…case结构在某些情况下可以替代if…else结构。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值