1.认识:
switch 用于开关语句
case 声明开关语句的分支
break 跳出当前循环
default 开关语句的其他分支
常量包括:整型常量、实型常量、符号常量、字符型常量
2.一般形式:
swich(表达式)
{
case 常量1: 语句1 ;break;
case 常量2: 语句2;braak;
...
case 常量n: 语句n;break;
default 语句n+1;break;
}
3.语义:
首先计算 表达式,如果表达式的结果与某个常量值相等,则执行该常量值所对应的语句(遇到break则跳出整个循环),否则执行default 所对应的语句(若不存在default,则什么也不做)。
4.注意:
(1)switch用于Int /char/long/long long类型的变量和多个特定常量的判别处理,不能用于float和double类型,但可以经过数据类型转换后再使用。
(2)在case后的各常量表达式的值不能相同,否则会出现错误。
(3)不是每一个case都需要包含break.如果case语句不包含break,则继续执行后续的case,直到遇 到break为止。
(4)一个switch语句可以有一个default(也可以没有),出现在switch的结尾。default可用于上面所有case 都不为真时执行。
(5)如果每个case语句中都存在break语句,则各 case 和 default 子句的先后顺序的变动,不会影响程序执行结果。
5.简单举例:
#include<stdio.h>
main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("a"); break;
case 2: printf("b"); break;
default: printf("c"); break;
}
}
输入 2 输出 b;
#include<stdio.h>
main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("a"); break;
case 2: printf("b");
default: printf("c"); break;
}
}
输入2 输出bc(语句2没有break,则继续向下执行)
#include<stdio.h>
main()
{
int k;
scanf("%d",&k);
switch(k)
{
case 1: printf("a"); break;
default: printf("c"); break;
case 2: printf("b"); break;
}
}
输入2 输出 b (default 位置不影响执行结果)