有人可以向我解释一下吗?
答案 0 :(得分:35)
它们非常相似,但每个都有一些特殊功能。
<强>开关强>
switch
通常比许多嵌套if else
更紧凑,因此更具可读性break
,您可以使用许多类C语言进入下一个案例。使用if else
,您需要goto
(对您的读者来说不是很好......如果语言完全支持goto
)。switch
仅接受基本类型作为键和常量作为案例。这意味着编译器可以使用非常快的跳转表对其进行优化。如何正确格式化switch
并不是很清楚。从语义上讲,这些案例是跳转目标(如goto
的标签),它应该向左齐平。当你有大括号时情况变得更糟:
case XXX: {
} break;
或者大括号是否应该成为他们自己的行?闭合支撑是否应该落后于break
?这有多难以理解?等
switch
仅接受某些数据类型。<强>的if-else 强>
if
允许条件中的复杂表达式,而switch需要常量break
之间的if
,但你可以忘记else
(尤其是在'cut'n'paste期间)答案 1 :(得分:2)
主要区别在于switch
通常通过索引跳转将立即发送到case
,而不是必须评估所需的所有条件。一个if-else
链,这意味着链末尾的代码比开头的代码慢得多。
这反过来对switch
链没有的if-else
声明施加了一些限制:它无法处理所有数据类型,而且case
全部都是<img class="second" src="http://s32.postimg.org/4vp56ei11/workout_left.jpg" id="under">
.second {
position: absolute;
top: 0;
z-index: 2;
left: 0;
width: 100%;
}
值必须保持不变。
答案 2 :(得分:2)
if-else和switch
之间的差异if语句中的表达式决定是否在block或else块下执行语句。另一方面,switch语句中的表达式决定执行哪种情况。
If-esle语句检查是否存在相等性以及逻辑表达式。另一方面,switch仅检查是否相等。
if语句计算整数,字符,指针或浮点类型或布尔类型。另一方面,switch语句仅计算字符或整数数据类型。
执行顺序就像if块执行时的语句或else块语句下的语句将执行。另一方面,switch语句中的表达式决定执行哪种情况,如果在每种情况之后不应用break语句,它将执行直到switch语句结束。
如果内部表达式如果变为false,则执行else块内的语句。如果switch语句中的表达式变为false,则执行default语句。
编辑if-else语句很困难,因为跟踪需要修正的位置很繁琐。另一方面,很容易编辑switch语句,因为它们很容易跟踪。
我们可以说一句话 switch比else else语句快一点!!!
答案 3 :(得分:1)
如果不这样做 - IT用于做出决定
Switch语句 - 用于根据案例值列表测试给定变量的值。
答案 4 :(得分:1)
Switch和if-else语句之间的区别如下:
这是if-else阶梯的一般语法:
if (condition1) { //Body of if }
else if (condition2) { //Body of if }
else if (condition3) { //Body of if }
else { //default if all conditions return false }
这是switch的一般语法:
switch ( variable )
{
case <variable value1>: //Do Something
break;
case <variable value2>://Do Something
break;
default: //Do Something
break;
}
if-else梯形图是严格条件检查类型, 而switch是跳跃值捕获类型。
切换if-else梯形图的优点:
答案 5 :(得分:0)
明显的区别:
if...else
语句检查括号中的条件的计算结果是 true
还是 false
switch
语句检查括号中的 value 与 case
关键字的 value 的相等性是否等于 {{1 }}。true
var a = 'hello'
if(a == 'hello') {
print('right!')
} else if (a == 'hi')
print('left!')
} else {
print('wrong!')
}
答案 6 :(得分:-2)
我认为主要区别在于if-else块我们可以测试条件。但是在切换中不会完全相同的方式