switch中case与default的顺序先来看⼏个实例
1、
实例源代码为:
#include<stdio.h>
int main()
{
int i = 2;
switch (i)
{
default:
printf("%s\n", "default");
case1:
printf("%s\n", "case 1");
case2:
printf("%s\n", "case 2");
case3:
printf("%s\n", "case 3");
switch case判断字符串}
return0;
}
当i为2时输出为:
case 2
case 3
当将i该为0时输出为:
default
case 1
case 2
case 3
2、现在将default语句放在case语句的中间
实例代码为:
#include<stdio.h>
int main()
{
int i = 2;
switch (i)
{
case1:
printf("%s\n", "case 1");
default:
printf("%s\n", "default");
case2:
printf("%s\n", "case 2");
case3:
printf("%s\n", "case 3");
}
return0;
}
当i为2时输出为:
case 2
case 3
当将i改为0时输出为:
default
case 2
case 3
解析:其实switch语句⼀般是如下这样处理的(在编译器没有优化的情况下)
【对于上⾯实例2的代码,这⾥⽤类似汇编代码的伪代码来说明其执⾏过程】
if(i == 1)
jmp to case 1;
else if (i == 2)
jmp to case 2;
else if (i == 3)
jmp to case 3;
else
jmp to default;
case 1:    printf("%s\n", "case 1");
default:    printf("%s\n", "default");
case 2:    printf("%s\n", "case 2");
case 3:    printf("%s\n", "case 3");
上⾯⽤的说明⽅式有点不伦不类,但很说明问题。它给出了⼀种汇编代码解释switch语句的⽅式。
⾸先判断i与各个case后的条件值是否相等,然后进⾏相应的跳转。不管你编写的代码中default 放在那⾥,这⾥的条件判断都是先按顺序⽐较其他⾮default值,当这些条件都不满⾜的时候,才跳转到default的相应代码处执⾏。将每⼀种情况的处理代码加上标号按你的语句给出的顺序排列在开始判断语句的后⾯。这就是switch的汇编解析,即它真正被编译为可执⾏程序的样⼦。
这⾥给出的是⼀般的情况,编译器可能有各种优化的措施,其汇编代码可能和上⾯的形式不同但效果是⼀样的,只要按照上⾯的原理去推就可以了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。