msc*_*msc 1 c syntax performance switch-statement
在以下两个代码段中哪个性能更好?为什么?
小片1:
switch(a)
{
case 1 ... 5:
printf("%d\n",a);
break;
case 6 ... 10:
printf("%d\n",a);
break;
default:
printf("%d\n",a);
}
Run Code Online (Sandbox Code Playgroud)
摘录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);
}
Run Code Online (Sandbox Code Playgroud)
这两个片段都是相同的,它们并没有什么不同.您只是使用不同的语法来编写代码,这就是全部.
正如评论中已经提到的,第一种方法是使用gcc扩展来处理case-range.它允许您以便携性为代价编写更短的代码,因此请明智地选择.
任何(半合适的)编译器在生成程序集时都会生成相同的代码,因此在性能方面应该没有区别.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |