首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C语言中IF和SWITCH/CASE的区别

C语言中IF和SWITCH/CASE的区别
EN

Stack Overflow用户
提问于 2013-05-30 17:47:34
回答 5查看 11.6K关注 0票数 2

问题真的很简单:在我今年参加的一堂实验课上,教授在经典的if/then/else语句旁边展示了switch/case语句,但没有说在不同的编程情况下哪一个更好。

在检查一个至少可以有10/15可能值的变量时,哪一个更好?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-30 17:54:43

简单地说(你的问题很模糊),开关在汇编程序中编译成跳转表,因此比if / then / else更快。请注意,C中的switch语句有一个“跟随”特性(google this),该特性可以通过break语句绕过。

您只能打开求值为整型的对象。特别是,这意味着您不能打开字符串:字符串在任何情况下都不是自然C语言的一部分。

if / then / else连续检查几个条件。比较并不局限于整型,因为您正在测试的所有类型都是true (不是零)或false (零)。

这可能足以让您开始使用它。

票数 9
EN

Stack Overflow用户

发布于 2013-05-30 17:53:34

当要比较的值的类型适合为switch'd,并且它使代码更具可读性时,请继续使用switch。例如,

代码语言:javascript
复制
if (val == 0) {
    // do something
} else if (val == 1) {
    // do something else
} else if (val == 2) {
    // yet another option
} ...

switch相比,它杂乱无章,很难维护。想象一下,有一天,你不想打开val而是打开validate(val);然后你需要改变所有的条件。

此外,switch有时可能比if/else更快,因为编译器可以将其转换为jump tablebinary search。然后,编译器可能会对一系列if/else语句执行相同的操作,尽管这是一个更难进行的优化,因为子句顺序可能很重要,而编译器必须能够检测到它并不重要。

票数 2
EN

Stack Overflow用户

发布于 2013-05-30 17:54:48

我认为If then else更好,只有在你只有两个条件的情况下。否则,如果条件多于2个,最好使用switch case

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16832898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档