C语言的switch语句

C语言还提供了另一种用于多分支选择的 switch 语句, 其一般形式为:

switch(表达式){
case 常量表达式 1: 语句 1;
case 常量表达式 2: 语句 2;
…
case 常量表达式 n: 语句 n;
default : 语句 n+1;
}

比如:

switch (a){
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");
case 6:printf("Sa urday\n");
case 7:printf("Sunday\n");
default:printf("error\n");
}

本程序是要求输入一个数字,输出一个英文单词。但是当输入 3 之后,却执行了 case3 以及以后的所有语句,输出了 Wednesday 及以后的所有单词。这当然是不希望的。为什么会出现这种情况呢?这恰恰反应了switch 语句的一个特点。在 switch 语句中, “case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个 switch 语句,所以出现了继续执行所有后面 case 语句的情况。 这是与前面介绍的 if 语句完全不同的,应特别注意。为了避免上述情况,C 语言还提供了一种 break 语句,专用于跳出 switch 语句, break 语句只有关键字 break,没有参数。修改上述的程序,在每一 case 语句之后增加 break 语句, 使每一次执行之后均可跳出switch 语句,从而避免输出不应有的结果:

switch (a)
{
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");
}

在使用 switch 语句时还应注意以下几点:

  1. 在 case 后的各常量表达式的值不能相同,否则会出现错误。
  2. 在 case 后,允许有多个语句,可以不用{}括起来。
  3. 各 case 和 default 子句的先后顺序可以变动,而不会影响程序执行结果。
  4. default 子句可以省略不用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值