C语言switch语句的用法详解

原创 2013年12月02日 17:36:05
C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:
switch(表达式){ 
        case常量表达式1:  语句1;
        case常量表达式2:  语句2;
        … 
        case常量表达式n:  语句n;
        default:语句n+1;
}

其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

【例4.9】
main(){
    int a;
    printf("input integer number:      ");
    scanf("%d",&a);
    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("Saturday\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语句,从而避免输出不应有的结果。

【例4.10】
main(){
    int a;
    printf("input integer number:    ");
    scanf("%d",&a);
    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子句可以省略不用。

switch语句的用法详解

switch语句的用法详解C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:switch(表达式) { case常量表达式1: 语句1; case常量表达式2:...
  • zwmwcj
  • zwmwcj
  • 2015年10月27日 13:54
  • 7077

switch语句用法详解

一般形式: switch(表达式){      case 常量表达式1:  语句1;     case 常量表达式2:  语句2;     …      case 常量表达式n:  语句n;...
  • ccMaa
  • ccMaa
  • 2016年03月28日 19:17
  • 57668

c语言基础:关于switch的用法

switch后加字符与有两个判断数时怎么执行的
  • qq_36328643
  • qq_36328643
  • 2016年10月27日 22:27
  • 485

C语言switch使用之诡异用法

关于switch的用法这里不再做什么总结了,其实这个是一个便捷的快速跳转条件切换器。而关于这个功能最常用的技术讨论点在于case后面的break以及default。这里不讨论这些,直接看下面的代码: ...
  • grey_csdn
  • grey_csdn
  • 2017年03月19日 18:12
  • 563

c语言中switch语句容易引发的错误

首先来看下面一段代码 #include int main(int argc, char **argv) { int i = 5; switch(i) { case 1: i++; b...
  • zhuwenfeng215
  • zhuwenfeng215
  • 2015年03月29日 15:41
  • 643

C语言中sizeof用法详解

文章转载自:http://bbs.ednchina.com/BLOG_ARTICLE_268624.HTM 大部分公司在招聘技术职位中,面试的时候,都会考大家的c语言基础,而sizeof是他们最喜欢...
  • weijianmeng
  • weijianmeng
  • 2012年10月19日 15:29
  • 2583

switch语句中default用法详解

当年学C语言switch开关语句的时候,很多人会告诉你它是这么用的: switch(表达式){ case常量表达式1: 语句1; case常量表达式2: 语...
  • sum_TW
  • sum_TW
  • 2017年02月26日 15:39
  • 15175

C语言--指针用法详解

C语言指针用法详解 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字...
  • u010070526
  • u010070526
  • 2014年12月06日 22:14
  • 10475

c语言:根据输入的分数,判断其所在的等级,使用switch语句

#include int main() { int score; char grade; printf("请输入分数:"); scanf("%d",&score); int i; i=sc...
  • samxiaoguai
  • samxiaoguai
  • 2017年11月17日 22:59
  • 358

C语言switch语句的用法详解 黑马程序员

Java培训、Android培训、iOS培训、.Net培训、期待与您交流! 语言还提供了另一种用于多分支选择的switch语句, 其一般形式为: switch(表达式){      case 常...
  • syp723
  • syp723
  • 2015年05月28日 08:58
  • 546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言switch语句的用法详解
举报原因:
原因补充:

(最多只允许输入30个字)