目录
6.4 switch语句中的case和default的顺序问题
在前一节中我们学习了分支语句中if语句的相关知识第六节 分支语句(if 部分)-CSDN博客,下面将开始分支语句中switch语句的相关学习
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重
的
else if
改成更易⽤、可读性更好的形式
switch语句的写法
switch(expression)
{
case value1:statement
case value2:statement
default:statement
}
上⾯代码中,根据表达式
expression
不同的值,执⾏相应的
case
分⽀。如果找不到对应的值,
就执⾏
default
分⽀。
注:
• switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式
6.1 if语句 与 switch 语句对比
现在我们已经了解到了 if 和 switch语句的基本用法,现在我们做一组练习,将
if语句 与 switch 语句进行对比
练习:输⼊任意⼀个整数值,计算除3之后的余数
如果使⽤if语句完成,
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n%3 == 0)
printf("整除,余数为0\n");
else if(n%3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
}
使⽤switch语句改写
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
上述的代码中,需要注意2点
1.
case 和后边的数字之间必须有空格
2.
每⼀个
case
语句中的代码执⾏完成后,需要加上
break
,才能跳出这个switch语句。
6.2 switch 语句中的break
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
在上述代码中,我们可以发现,7除以3本来余数是1,但是我们发现运⾏结果多了⼀⾏“余数是2”的打印。
原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了 case 2 中的语句。 所以在 switch 语句中 break 语句是及其重要的,能实现真正的分⽀效果。 当然,break 也不是每个 case 语句都得有,要根据实际情况来看。
6.3 switch 语句中的default
在使⽤
switch
语句的时候,我们经常可能遇到⼀种情况,⽐如
switch
后的表达式中的值⽆法匹
配代码中的
case
语句的时候,这时候要不就不做处理,要不就得在
switch
语句中加⼊
default
⼦句。
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
switch
后边的
expression
的结果不是
value1
,也不是
value2
的时候,就会执⾏
default
⼦句
6.4 switch语句中的case和default的顺序问题
在
switch
语句中
case
⼦句和
default
⼦句有要求顺序吗?
default
只能放在最后吗?
其实,
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以
。
只不过我们通常是把
default
⼦句放在最后处理的。