以下两个代码片段的性能如何?为什么?对于switch语句使用不同的语法时,是否有任何可能的优化变化?
片段1:
switch(a)
{
case 1 ... 5:
printf("%d\n",a);
break;
case 6 ... 10:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
}
片段2:
switch(a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("%d\n",a);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
}
以上是GCC扩展。很明显,为什么第二个更好 – StoryTeller
前者甚至不会在标准C中编译。您正在使用哪种非标准编译器? – Lundin
为什么不检查生成的汇编代码,对于初学者? –