我感兴趣的是,如果我使用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