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

前端之家收集整理的这篇文章主要介绍了在使用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

猜你在找的C&C++相关文章