要点
switch是切换的意思,case是情况的意思
顾名思义switch case就是根据判断的值切换到某种情况的意思。
关键字 | 注意点 |
---|---|
switch | 只能输入整型 |
case | 1.整型 2.常量(常变量也不可以哦) |
default | 除case外的所有情况(可有可无) |
break | 退出switch语句 |
用法
显示星期
int a=0;
scanf("%d",&a);
switch(a)
{
case(1):
printf("星期一");
break;
case(2):
printf("星期二");
break;
case(3):
printf("星期三");
break;
case(4):
printf("星期四");
break;
case(5):
printf("星期五");
break;
case(6):
printf("星期六");
break;
case(7):
printf("星期天");
break;
default:
printf("输入错误");
break;
}
效果是这样子的
但是如果我想要输出的是工作日和假期呢?
case的理解&break的运用
也许很多人会这样修改:
int a=0;
scanf("%d",&a);
switch(a)
{
case(1):
printf("工作日");
break;
case(2):
printf("工作日");
break;
case(3):
printf("工作日");
break;
case(4):
printf("工作日");
break;
case(5):
printf("工作日");
break;
case(6):
printf("休息");
break;
case(7):
printf("休息");
break;
default:
printf("输入错误");
break;
}
结果也是没问题的
那么还能不能在优化了呢?这就涉及到了对case的理解。
当switch判断的值为2时,会跳过case(1)直接进入case(2)语句,如果没有break就会接着继续执行case(3),case(4)…一直到结束。
这时候机灵的朋友就能想到用这个可以化简刚才的代码。情况(case)不同,但是要执行的语句(打印工作日/假期)是一样的话,就可以去掉break让case合并
代码如下:
int a=0;
scanf("%d",&a);
switch(a)
{
case(1):
case(2):
case(3):
case(4):
case(5):
printf("工作日");
break;
case(6):
case(7):
printf("休息");
break;
default:
printf("输入错误");
break;
}
default的小细节
幽灵一般的default存在感很低,switch语句里可以没有他。但他也有独特的地方:1.补充语句 2.可以插队
1.补充语句就是将case外的情况囊括在内,并执行相应语句。
2.default放在switch语句内的任何地方都是可以的 (不要给我说switch()的括号里>o<)
例如:
int a=0;
scanf("%d",&a);
switch(a)
{
default:
printf("输入错误");
break;
case(1):
case(2):
case(3):
case(4):
case(5):
printf("工作日");
break;
case(6):
case(7):
printf("休息");
break;
}
int a=0;
scanf("%d",&a);
switch(a)
{
case(1):
case(2):
case(3):
case(4):
case(5):
printf("工作日");
break;
default:
printf("输入错误");
break;
case(6):
case(7):
printf("休息");
break;
}
但是不可以这样:
int a=0;
scanf("%d",&a);
switch(a)
{
case(1):
case(2):
default:
printf("输入错误");
break;
case(3):
case(4):
case(5):
printf("工作日");
break;
case(6):
case(7):
printf("休息");
break;
}
default不可以插入到连起来使用的case板块里哦
那么今天的分享就到这里了,下次见!