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