(1)若有以下程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include<stdio.h> main() { int s= 0 ,n; for (n= 0 ; n< 4 ; n++) { switch (n) { default :s+= 4 ; case 1 :s+= 1 ; case 2 :s+= 2 ; case 3 :s+= 3 ; } } printf ( "%d
" ,s); } |
则程序的输出结果是?
6
18
10
24
答案:D 错选:A
在switch-case语句中,多个case可以共用一条执行语句,如:
case 常量表达式1:
case 常量表达式2:
case 常量表达式3:
语句;
break;
由此可以看出case语句的作用:
case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。
因此,一旦与switch后面圆括号中表达式的值匹配,就从此标号处开始执行;
而且执行完一个case后面的语句后,若没遇到break语句,就自动进入下一个case继续执行,而不再判断是否与之匹配,直到遇到break语句才停止执行,退出switch语句。
因此,若想执行一个case分之后立即跳出switch语句,就必须在此分支的最后添加一个break语句。
第1次:s=0+4+1+2+3=10;
第2次:s=10+1+2+3=16;
第3次:s=16+2+3=21;
第4次:s=21+3=24.