可能重复:
Advantage of switch over if-else statement
Why Switch/Case and not If/Else If?
我目前正在学校学习“转换案例”,并且想知道当“if else”已经存在时学习它的重点是什么。 “if else”基本上是做“转换案例”的另一种方式。
如果我错了,请纠正我。
答案 0 :(得分:3)
听起来有点怀旧。他们俩实际上“看起来”都一样。但是代码执行时有点不同。
首先,'switch-case'是关于仅比较价值的。但'if-else'可以处理一个布尔表达式(这将支持更复杂的子句)
如果在找到实际搜索的内容时使用通用的'if-else',则该过程仍将运行,直到它完成处理最后一个if(但实际上它可以使用跳转技术来实现类似的机制) “切换情况”。) 如果你使用'switch-case'就不会发生这种情况,因为一旦找到了你正在搜索的值,它就会中断并且不会继续下一个案例。此外,'switch-case'比其他更快进行处理,因为它只比较定义的值(不是表达式)。而且'switch-case'也有一个很好的格式化结构(它简单,紧凑,可读和干净)。
答案 1 :(得分:0)
您应该学习switch
构造,因为它是C语言提供的有用工具。
不与if-else
块相同。
在您的问题的评论部分,有现有StackOverflow答案的链接,解释了这些差异。
每个结构都有自己的优点和缺点,随着时间的推移,你将学习何时选择一个而不是另一个。
答案 2 :(得分:0)
你应该学习两者。虽然技术上可以实现任何if
/ else
序列与switch
和反之亦然,但执行此操作将是非常糟糕的做法...在大多数情况下。
所以你需要学习这两个结构,了解它们的优点和缺点,并学会运用你的判断来确定何时使用每个结构。
C和C ++和Java(以及C#和Pascal以及许多其他语言)所有支持switch语句这一事实应该告诉你某些事情关于它的用处。
答案 3 :(得分:0)
你拥有的工具越多越好。找出你应该知道两个原因的最佳陈述...但是更详细的例子 -
switch语句适用于构造的单一类型的变量:
variable == value
因此,例如在C中,如果您尝试将某些内容与几个不同的字符串进行比较以便做出决定,则无法通过切换来实现。在这种情况下,您需要了解if / else结构。
但是,如果你有大量的顺序检查:
var == 1 or
var == 2 or
var == 3 etc
编译器可能会将您的switch语句转换为跳转表,这最终会比if / else列表的大量比较更快。
答案 4 :(得分:0)
switch-case
和if-else
构造之间的区别:
break
,则Switch-case会自动执行下面的下一个案例。此功能有时可用于编写复杂的代码,例如“电话拨号计划”