0%

多路分支

多路分支

switch-case

switch 语句可以处理多分支选择问题

image-20201013215143827


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
//如果定义 const int MRN = 2;
int type;

scanf("%d",&type);

switch (type) {
case 1;
printf("你好");
break;
case 2; //假如定义成MRN
printf("你好");
break;
case 3;
printf("你好");
break;
default:
printf("啊,什么啊?");
break;
}
return 0;
}

//备注 常数问题

case 2 后面替换成MRN 变量也可以编译运行,但这种方法只能用于 C99

break

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main()
{
int type;

scanf("%d",&type);

switch (type){

case 1:
case 2:
printf("你好\n");
break;
case 3:
printf("晚上好\n");
case 4:
printf("再见\n");
break;
default:
printf("啊,什么啊?");
break;
}
return 0;
}

switch ( type)

如果type等于某个值,去case所代表的那个位置去,做后面那个句子 ,一直往下做,直到遇到break 为止,如果没有遇到break,又进入到下一个case,那就会进去。

运行结果:

  • 输入 1,屏幕输出
    image-20201013235442305

  • 输入2,屏幕输出

    image-20201013235628391

  • 输入3,屏幕输出
    image-20201013235751041

所以没遇到break 一直case下去,并输出其他case里的内容。

case 指的是:

  • 从哪里开始执行的位置,开始做事情

  • case并不是划分一段一段的标志

  • case只是一个入口,路牌之类,

  • case并不能阻止程序往下进行,只有break可以


  • switch 语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个 break,或者switch结束为止。