[PIC®/AVR®/dsPIC®产品] 在switch与if else之间该如何选择

[复制链接]
18259|38
blust5 发表于 2023-3-15 16:37 | 显示全部楼层
本帖最后由 blust5 于 2023-3-15 16:41 编辑

Switch判断的是同一个/组条件的不同状态分支,而if else可以判断不同条件的不同状态分支
比如:
  1. if(a==1)
  2. {
  3.     //......
  4. }
  5. else if(b==1)
  6. {
  7.     //......
  8. }
  9. else if(c==1)
  10. {
  11.     //......
  12. }
  13. else if(d==1)
  14. {
  15.     //......
  16. }
  17. //......


 楼主| gaoyang9992006 发表于 2023-3-15 17:10 | 显示全部楼层
blust5 发表于 2023-3-15 16:37
Switch判断的是同一个/组条件的不同状态分支,而if else可以判断不同条件的不同状态分支
比如:

是的,更加灵活。不过要分情况而定,如果判断条件只有一个整数参数,那确实是可以用switch的。
suncat0504 发表于 2023-3-18 11:33 | 显示全部楼层
从效率讲,switch更好一些。但从代码维护上讲,我觉得if...else更好一些。比如后期如果出现条件更改,以及条件追加、修改上,更利于代码的后期维护。我以前长期做纯软工作,编写代码时也不喜欢用switch,因为式样经常变更,导致执行的条件发生变化,使用switch的话,出现复合条件的场合,修改起来,就比较麻烦,代码不利于解读。所以更愿意使用if...else来处理。对于现在的硬件资源,大多数场合是不需要考虑那么一丢丢执行效率上的差异的。
综合式样书的书写上、代码的可读性上,还是觉得用if...else更好一些。相比于计算机,嵌入式上在需要重点考虑执行效率的场合,也许才考虑使用switch吧。
blust5 发表于 2023-3-20 15:23 | 显示全部楼层
suncat0504 发表于 2023-3-18 11:33
从效率讲,switch更好一些。但从代码维护上讲,我觉得if...else更好一些。比如后期如果出现条件更改,以及 ...

有很多并列分支的话,还是Switch更直观一些,也比较经常用Switch。
比如对通讯协议的解析、对状态机的判断等。

评论

确实,状态机用ifelse的话太难看了,switch很直观  发表于 2023-3-20 17:02
jerkoh 发表于 2023-3-24 17:23 | 显示全部楼层
还好,我有个38000多行  的  if else 函数
asdsfgwsafd 发表于 2023-3-24 17:30 | 显示全部楼层
这代码其实不关if else 还是switch的事。
主要是不写注释
burningrider 发表于 2023-3-27 09:09 | 显示全部楼层
效率是不同的,Switch只适应于表达式与整数case。
如果能用Switch的,不要用if,不需要想.

如果是复杂的表达式,则要用if
如果分支只有两三个,也可以用if,简明
mickit 发表于 2023-4-9 14:22 | 显示全部楼层
在代码结构清晰、易读、易维护的前提下,选择更加简洁和高效的语句。
claretttt 发表于 2023-4-9 15:16 | 显示全部楼层
要实现多分支的条件判断,则推荐使用if else语句,因为switch语句只能有一个default分支。
jimmhu 发表于 2023-4-9 15:22 | 显示全部楼层
对于多个选项的情况,使用 switch 更加清晰:当需要在多个选项之间进行选择时,switch 语句通常比 if else 语句更加清晰和易读。在 switch 中,每个 case 表示一个选项,可以让代码结构更加明确。
mickit 发表于 2023-4-9 16:54 | 显示全部楼层
switch语句比if else更加简洁  
1988020566 发表于 2023-4-9 17:07 | 显示全部楼层
要对多个值进行相同的处理,则推荐使用switch语句,因为可以利用case合并多个值,使代码更加简洁。
sesefadou 发表于 2023-4-9 17:14 | 显示全部楼层
考虑代码可读性和可维护性:选择 switch 或 if else 语句时,还需要考虑代码的可读性和可维护性。
10299823 发表于 2023-4-9 17:20 | 显示全部楼层
据实际需要,结合两种语句的优点,使用更加灵活和高效的编程方式。
tabmone 发表于 2023-4-9 17:52 | 显示全部楼层
如果要判断的条件较为复杂,则推荐使用if else语句,因为switch语句只能支持严格的条件判断。
albertaabbot 发表于 2023-4-9 20:30 | 显示全部楼层
可以用switch语句实现的情况下,更推荐使用switch语句。
olivem55arlowe 发表于 2023-4-9 20:37 | 显示全部楼层
选择 switch 还是 if else 语句,需要根据具体情况进行权衡和选择。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部