C语言的switch语句

Posted 一只学习的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 子句可以省略不用。

以上是关于C语言的switch语句的主要内容,如果未能解决你的问题,请参考以下文章

c语言switch语句中default是啥意思?

switch是啥意思

C++怎么用switch语句判断输入的字符

C语言switch case后如何执行多条命令

c语言中switch可用啥语句替换

关于C语言switch语句问题