if语句会根据对某个条件的判断结果,将程序的流程分为两支,而switch语句,则会将程序分为多个分支。那么我们就用一个例子来展现switch语句特殊于if语句的地方。显示输入的整数除以3所得余数的程序,首先我们用if语句来书写:
#include<stdio.h>
int main()
{
int num;
printf("请输入一个整数:");
scanf("%d",&num);
if(num%3==0)
printf("输入的整数能够被3整除。");
else if(num%3==1)
printf("输入的整数除以3的余数是1。");
else
printf("输入的整数除以3的余数是2。");
return 0;
}
上面程序使用了两次计算num除以3的余数表达式num%3,多次输入同一个表达式,容易造成输入错误,不仅如此同一个除法执行两次也会使得程序略显冗长,通过某一单一表达式的值,将程序分为多个分支的时候,可以使用switch语句,这样可以让程序更简洁。switch语句的语法结构如下:
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。注意:switch 后的 expression 必须是整型表达式,case 后的值,必须是整形常量表达式。上面的例子我们用switch语句修改后如下:
#include<stdio.h>
int main()
{
int num;
printf("请输入一个整数:");
scanf("%d",&num);
switch(num%3)
{
case 0:printf("输入的整数能够被3整除。");
case 1:printf("输入的整数被3整除的余数为1。");
case 2:printf("输入的整数被3整除的余数为2。");
}
return 0;
}
switch 语句也是有分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了 case 2 中的语句。 所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。
在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹 配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊ default ⼦句。