switch反汇编自学过程中的总结:
例子: 随便写一个3个case的switch,查看汇编。
void function()
{
int i = 0;
switch (i)
{
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
default:
printf("error");
break;
}
}
看得出与if的反汇编并无差别,并且挨个判断。所以如果没有3个以上的case条件可不必要使用switch。
修改一下例子:
void function()
{
int i = 0;
switch (i)
{
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
case 4:
printf("4");
break;
case 5:
printf("5");
break;
default:
printf("error");
break;
}
}
反汇编代码:
其中0x6A1