问题真的很简单:在我今年参加的一堂实验课上,教授在经典的if/then/else语句旁边展示了switch/case语句,但没有说在不同的编程情况下哪一个更好。
在检查一个至少可以有10/15可能值的变量时,哪一个更好?
发布于 2013-05-30 17:54:43
简单地说(你的问题很模糊),开关在汇编程序中编译成跳转表,因此比if / then / else更快。请注意,C中的switch语句有一个“跟随”特性(google this),该特性可以通过break语句绕过。
您只能打开求值为整型的对象。特别是,这意味着您不能打开字符串:字符串在任何情况下都不是自然C语言的一部分。
if / then / else连续检查几个条件。比较并不局限于整型,因为您正在测试的所有类型都是true (不是零)或false (零)。
这可能足以让您开始使用它。
发布于 2013-05-30 17:53:34
当要比较的值的类型适合为switch'd,并且它使代码更具可读性时,请继续使用switch。例如,
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 table或binary search。然后,编译器可能会对一系列if/else语句执行相同的操作,尽管这是一个更难进行的优化,因为子句顺序可能很重要,而编译器必须能够检测到它并不重要。
发布于 2013-05-30 17:54:48
我认为If then else更好,只有在你只有两个条件的情况下。否则,如果条件多于2个,最好使用switch case
https://stackoverflow.com/questions/16832898
复制相似问题