#include <stdio.h>
void print_week(unsigned int day);
void print_week(unsigned int day)
{
switch(day)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("error\n");
break;
}
}
int main (void)
{
print_week(3);
return 0;
}
该程序中,在 print_week 函数中通过 switch 语句实现根据数字输出星期名称的功能。执行代码,程序将输出“Wednesday”。
#include <stdio.h>
void print_week(unsigned int day);
void print_week(unsigned int day)
{
switch(day)
{
case 1:
printf("Monday\n");
case 2:
printf("Tuesday\n");
case 3:
printf("Wednesday\n");
case 4:
printf("Thursday\n");
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("error\n");
break;
}
}
int main (void)
{
print_week(3);
return 0;
}
运行结果为:
default:
printf("error\n");
break;
如果在 switch 语句中去掉 default 语句,那么 switch 语句将失去对默认情况与错误情况的处理能力。所以,奉劝大家不要偷懒,老老实实把每一种情况都用 case 语句来完成,而把真正对默认情况的处理交给 default 语句来完成。即使程序真的不需要 default 处理,也应该保留此语句:
default:
break;
这样做并非画蛇添足,可以避免令人误以为你忘记了 default 处理。
char ch = c[0];
switch (ch)
{
case 'a':
f1();
break;
case 'b':
f2();
break;
case 'c':
f3();
break;
default:
break;
}
在上面的程序中,字符变量 ch 的值是取字符数组 c[] 的第一个字符,与 case 语句中的常量值逐一进行比较。很显然,这种方法存在一个严重的问题。
if(0 == strcmp("ab",c))
{
f1();
}
else if(0 == strcmp("bc",c))
{
f2();
}
else if(0 == strcmp("cd",c))
{
f3();
}
else
{
}
void print_week(unsigned int day)
{
switch(day)
{
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
default:
switch(day)
{
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("error\n");
break;
}
}
}
在上面的代码中,假设 case 6 与 case 7 不经常发生,因此将它们放置到嵌套 switch 语句的最内层。从表面看,虽然这样损失了程序的一定可读性,但当 case 语句很多,并且确实有些 case 语句发生的频率比较低时,这种解决方案还是可取的。
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有