0

可能重复:
切换 if-else 语句的优势
为什么使用 Switch/Case 而不是 If/Else If?

我目前正在学校学习“switch case”,并且想知道当“if else”已经存在时学习它的意义何在。“if else”基本上是另一种做“switch case”的方式。

如果我错了,请纠正我。

4

5 回答 5

3

听着有点怀旧。他们俩实际上“看起来”一样。但是在执行代码时有点不同。

首先,“switch-case”是关于仅比较值的。但是 'if-else' 可以处理布尔表达式(这将支持更复杂的子句)

如果您在找到您实际搜索的内容后使用通用的“if-else”,则该过程仍将运行,直到它完成处理最后一个 if(但实际上它可以使用跳转技术来获得类似“switch-”的机制case'。)如果你使用'switch-case'就不会发生这种情况,因为一旦找到你要搜索的值,它就会中断并且不会继续下一个case。此外,'switch-case' 比 if else 处理得更快,因为它只比较定义的值(而不是表达式)。'switch-case' 也有很好的格式化结构(简单、紧凑、可读和干净)。

于 2012-12-19T04:41:02.483 回答
1

你拥有的工具越多越好。明确说明为什么您应该同时了解两者的最佳陈述……但是更详细的示例-

switch 语句适用于构造的单一类型的变量:

variable == value

因此,例如,在 C 语言中,如果您试图将某些内容与几个不同的字符串进行比较以做出决定,那么您不能通过 switch 来做到这一点。在这种情况下,您需要了解 if/else 构造。

但是,如果您有大量的顺序检查:

var == 1  or
var == 2  or
var == 3  etc

编译器可能会获取您的 switch 语句并将其转换为跳转表,这最终会比 if/else 列表的大量比较更快。

于 2012-12-19T04:58:22.873 回答
0

switch-caseif-else构造之间的区别:

  1. Switch-case 仅打开值,它不计算布尔表达式。
  2. break如果您在 case 块之后不使用,switch-case 会自动执行下面的下一个案例。此功能有时对编写复杂代码很有用,例如“电话拨号计划”
  3. 与 if-else 相比,switch-case 在比较的数量很大时更优雅,例如显示“菜单”等。
于 2012-12-19T06:24:12.957 回答
0

您应该学习该switch构造,因为它是 C 语言提供的有用工具。

if-else块不同。

在您问题的评论部分,有指向现有 StackOverflow 答案的链接,解释了它们之间的区别。

每个结构都有其优点和缺点,随着时间的推移,您将了解何时选择一个而不是另一个是合适的。

于 2012-12-19T04:09:10.060 回答
0

你应该两个都学。虽然在技术上可以使用 a 来实现 any if/else序列,switch反之亦然但这样做是非常糟糕的做法......在大多数情况下。

因此,您需要学习这两种结构,了解它们的优缺点,并学会使用您的判断来判断何时适合使用每种结构。

C 和 C++ 和 Java(以及 C# 和 Pascal 和许多其他语言)支持 switch 语句这一事实应该告诉你一些关于它的有用性......

于 2012-12-19T04:16:07.570 回答