1.1switch语法
1. switch(expression)
2. case value1: statement;
3. case value2: statement;
4. default : statement;
switch的case分支根据表达式expression的值不同来执行相对应的case分支,如果没有与表达式中的值对应的case分支就执行default分支。
switch的表达式必须是整型表达式,case的value也必须是整型的常量表达式。
1.2 break
例子:
C
int main()
{
int num = 1;
switch (num)
{
case 1:
printf("hello c\n");
case 2:
printf("hello c++\n");
default :
printf("hello java\n");
}
return 0;
}
我们知道switch语句中的表达式num为1那么根据switch的语法我们可以知道打印的是hello c,那么我们运行下看看是否和我们的猜想一样。
为什么打印是三个全打印呢?
这是因为switch语句在运行时不会运行完对应的case语句后结束它还会继续运行下去直到switch语句执行完毕,那有什么方法解决这个问题吗?
C语言中有个叫break的关键字,break:跳出当前循环,那我们再试试
例子:
C
int main()
{
int num = 1;
switch (num)
{
case 1:
printf("hello c\n");
break;
case 2:
printf("hello c++\n");
break;
default:
printf("hello java\n");
}
return 0;
}
我们再看看运行的结果是否和我们第一次的想法一致
我们可以看到是和我们的想法一致,所以break在switch语句中是十分重要的也是因为break使switch语句中才能实现真正的分支。
每个case在执行完后加上break才能跳出switch,而break并不是每个case语句后都要加上这个要根据情况而定。
比如我们要求打印星期1到5为工作日星期6和7为休息日用switch来写
例子:
C
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
default :
printf("输入错误");
}
return 0;
}
1.3 case和default的顺序的问题
我们知道在switch中表达式若是没有对应的case value就会执行default语句那他们的顺序有要求吗?
在C语言中并没有规定case和default的顺序问题所以他们的顺序可以任意,只要满足了你的代码需求就可以,不过为了代码的可读性我们通常把default放到最后面