我感兴趣的是,如果我使用C或C编译器的观点有什么不同:
if (value == a) { ... } else if (value == b) { ... } else if (value == c) { ... }
与
switch (value) { case a: ... break; case b: ... break; case c: ... break; }
我觉得没有区别,只有句法.有谁知道更多吗?
谢谢,Boda Cydo.
解决方法
存在差异 – 对于交换机,编译器可以优化交换机以使用查找表.如果有许多值彼此足够接近,则这是可能的.例如,这个开关:
switch ( integer ) { case 10: xxx break; case 12: yyy break; case 13 zzz break; }
可能成为(伪代码):
address = lookup[ integer - 10 ]; // which is prefilled with { case_10,err,case_12,case 13 } goto address; case_10: xxx; goto err; case_12: yyy; goto err; case_13: zzz; err: //do nothing
原文地址:https://www.jb51.cc/c/117373.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。