C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Switch语句的工作原理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
switch语句如何立即下降到内存中的正确位置?对于嵌套的if语句,它必须与每个语句进行比较,但是使用switch语句它会直接转到正确的大小写.这是如何实现的?

解决方法

将switch语句编译为机器代码有许多不同的方法.以下是一些:

>编译器可以生成一系列测试,这些测试效率不高,因为只有log2(N)测试足以在N个可能的情况下调度值.
>编译器可以生成一个值表和跳转地址,然后由通用查找代码(线性或二分法,类似于bsearch())使用,最后跳转相应的位置.
>如果案例值足够密集,编译器可以生成一个跳转地址表和代码,用于检查开关值是否在包含所有案例值的范围内,并直接跳转相应的地址.这可能是最接近您的描述的实现:但是使用switch语句,它直接转到正确的大小写.

根据目标cpu的特定能力,编译器设置以及案例值的数量和分布,编译器可能使用上述方法之一或其他方法,或它们的组合,甚至一些其他方法.

编译器设计人员花费了大量精力来尝试改进这些选择的启发式方法.查看汇编输出或使用Godbolt’s Compiler Explorer等在线工具查看各种代码生成可能性.

大佬总结

以上是大佬教程为你收集整理的Switch语句的工作原理全部内容,希望文章能够帮你解决Switch语句的工作原理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。