第37节:Switch语句
Switch语法:
switch(表达式)
{
case 常量表达式1:
语句;
break;
case 常量表达式2:
语句;
break;
case 常量表达式n:
语句;
break;
default:
语句;
}
例子:
#include "stdio.h"
#include "windows.h"
switch(x+1){
case 4:
printf("A\n");
break;
case 5:
printf("B\n");
break;
case 6:
printf("C\n");
break;
default:
printf("default\n");
break;
}
}
void main()
{
Myprint(3);
return;
}
看反汇编代码:
8: case 4:
9: printf("A\n");
00401055 push offset string "A\n" (00422030)
0040105A call printf (00401100)
0040105F add esp,4
10: break;
00401062 jmp Myprint+6Fh (0040108f)
11: case 5:
12: printf("B\n");
00401064 push offset string "B\n" (0042202c)
00401069 call printf (00401100)
0040106E add esp,4
13: break;
00401071 jmp Myprint+6Fh (0040108f)
14: case 6:
15: printf("C\n");
00401073 push offset string "C\n" (00422028)
00401078 call printf (00401100)
0040107D add esp,4
16: break;
00401080 jmp Myprint+6Fh (0040108f)
17: default:
18: printf("default\n");
00401082 push offset string "default\n" (0042201c)
00401087 call printf (00401100)
0040108C add esp,4
19: break;
switch 语句与if...else 语句的区别
1>switch 结构只进行等值判断,而if...else可以进行区间判断
2>switch结构的执行效率远远高于if...else在分支条件比较多的情况下这种趋势愈发明显。
Switch语法:
switch(表达式)
{
case 常量表达式1:
语句;
break;
case 常量表达式2:
语句;
break;
case 常量表达式n:
语句;
break;
default:
语句;
}
例子:
#include "stdio.h"
#include "windows.h"
void Myprint(int x)
{switch(x+1){
case 4:
printf("A\n");
break;
case 5:
printf("B\n");
break;
case 6:
printf("C\n");
break;
default:
printf("default\n");
break;
}
}
void main()
{
Myprint(3);
return;
}
看反汇编代码:
8: case 4:
9: printf("A\n");
00401055 push offset string "A\n" (00422030)
0040105A call printf (00401100)
0040105F add esp,4
10: break;
00401062 jmp Myprint+6Fh (0040108f)
11: case 5:
12: printf("B\n");
00401064 push offset string "B\n" (0042202c)
00401069 call printf (00401100)
0040106E add esp,4
13: break;
00401071 jmp Myprint+6Fh (0040108f)
14: case 6:
15: printf("C\n");
00401073 push offset string "C\n" (00422028)
00401078 call printf (00401100)
0040107D add esp,4
16: break;
00401080 jmp Myprint+6Fh (0040108f)
17: default:
18: printf("default\n");
00401082 push offset string "default\n" (0042201c)
00401087 call printf (00401100)
0040108C add esp,4
19: break;
switch 语句与if...else 语句的区别
1>switch 结构只进行等值判断,而if...else可以进行区间判断
2>switch结构的执行效率远远高于if...else在分支条件比较多的情况下这种趋势愈发明显。