我发现我只能在 C++ 中使用数值switch
陈述,我认为它和一堆更深层的区别if-else
's.
因此我问自己:
- (如何
switch
与......不同if-elseif-elseif
在运行速度、编译时优化和一般编译方面?我这里主要说的是MSVC。
开关通常被编译为跳转表(通过比较来找出要运行的代码),或者如果不可能,编译器仍可能对比较重新排序,以便在值之间执行二分搜索(log N比较)。 if-else 链是线性搜索(尽管我认为,如果所有相关值都是编译时积分常量,则编译器原则上可以执行类似的优化)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)