我为什么要学习"切换案例"当" if else#34;已经存在

时间:2012-12-19 03:22:27

标签: java c++ c coding-style

  

可能重复:
  Advantage of switch over if-else statement
  Why Switch/Case and not If/Else If?

我目前正在学校学习“转换案例”,并且想知道当“if else”已经存在时学习它的重点是什么。 “if else”基本上是做“转换案例”的另一种方式。

如果我错了,请纠正我。

5 个答案:

答案 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-caseif-else构造之间的区别:

  1. Switch-case仅打开值,不会计算布尔表达式。
  2. 如果您在案例阻止后未使用break,则Switch-case会自动执行下面的下一个案例。此功能有时可用于编写复杂的代码,例如“电话拨号计划”
  3. 与if-else相比,当比较的数量巨大时,如在显示“菜单”等时,开关盒更优雅。