switch case 与 if else [重复]

2024-04-29

我想知道以下代码编译成汇编的方式是否有任何区别。我听说 switch-case 比 if else 更有效,但在这个例子中我不太确定情况是否如此。

if(x==1){
...
}else if(x==2){
...
}else{
...
}

and

switch(x){
 case 1:
 ...
 break;

 case 2:
 ...
 break;

 default:
 ...
}

如果条目是连续的(或接近连续的),编译器有时会将开关转换为跳转表。或者,理论上它可以使用二分搜索来查找案例,而不是一系列线性测试,如果您有大量案例,这会更快。

另一方面,没有什么可以阻止编译器对转换为 if/else 的相同代码进行相同的优化。

所以在一个好的编译器上,在某些情况下切换可以更快。在一个非常好的编译器上,它们是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

switch case 与 if else [重复] 的相关文章

随机推荐