微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用if,else if,else if,…和使用switch(){case A:… case B:…}之间C和C有什么区别吗?

我感兴趣的是,如果我使用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 举报,一经查实,本站将立刻删除。

相关推荐