转载: http://c.biancheng.net/cpp/html/39.html

C语言提供了一种用于多分支选择的switch语句, 其一般形式为:
switch(表达式){ 
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    … 
    case 常量表达式n:  语句n;
    default:  语句n+1;
}

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

#include <stdio.h>
int main(void){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");}return 0;
}

本程序是要求输入一个数字,输出一个英文单词。但是当输入3之后,却执行了case3以及以后的所有语句,输出了Wednesday 及以后的所有单词。这当然是不希望的。为什么会出现这种情况呢?这恰恰反应了switch语句的一个特点。在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况。 这是与前面介绍的if语句完全不同的,应特别注意。

为了避免上述情况,C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。修改例题的程序,在每一case语句之后增加break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。

#include <stdio.h>
int main(void){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");}return 0;
}

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

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

C语言switch语句的用法详解相关推荐

  1. c语言字符串switch用法,C语言switch 语句的用法详解

    搜索热词 C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的 ...

  2. c语言while将字符循环,C语言 while语句的用法详解

    在C语言中,共有三大常用的程序结构: 顺序结构:代码从前往后执行,没有任何"拐弯抹角": 选择结构:也叫分支结构,重点要掌握 if else.switch 以及条件运算符: 循环结 ...

  3. php中switch语句的理解,php中switch语句的使用详解

    我们之前给大家介绍了关于php中switch语句的介绍,我们都知道php中switch语句是循环语句,是一个开关语句,那么很多朋友都只知道简单的switch开关语句的用法了,今天就带大家了解一下php ...

  4. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

  5. 784-C语言rand和srand用法详解

    C语言rand和srand用法详解 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 <stdlib.h> 头 ...

  6. C语言再学习 -- Xargs用法详解

    参看:Xargs用法详解(原创) 简介 之所以能用到这个命令,关键是由于很多命令不支持 | 管道来来传递参数,而日常工作中有这个必要,所以就有了 xargs 命令,例如: 这个命令是错误的: find ...

  7. c语言switch case缩进,C语言中的switchnbsp;casenbsp;语句的用法详解

    本文就几个实例来说明Switch case 语句的用法. 说是C语言中的Switch case,其实和html+javascript中的Switch case语法是基本一样的哦. 问题: 有这么一个C ...

  8. 计算机科学类专升本复习之“C语言fopen函数的用法”详解(初稿)

    C语言fopen函数的用法,C语言打开文件详解 在C语言中,"操作文件" 之前 必须 先"打开文件"; 所谓"打开文件",就是让 " ...

  9. 第五章 C语言循环结构和选择结构_C语言break和continue用法详解(跳出循环)

    break关键字 在<C语言switch case语句>一节中,我们讲到了break,用它来跳出 switch 语句. 当 break 关键字用于 while.for 循环时,会终止当前层 ...

最新文章

  1. 原型开发、模型构建和设计反馈在线工具
  2. 通俗易懂地解释遗传算法?有什么例子?
  3. 零基础自学python看什么书-零基础学习Python那些书值得看
  4. 游戏开发概要策划书的内容
  5. Android下的junit 单元测试
  6. android平台 arcgisr_第一个基于ArcGIS的Android应用
  7. Arturia Prophet Mac音频插件:将Prophet 5,Prophet VS,Prophet Hybrid三种不同音乐合成器于一体
  8. PHP轻量级在线客服系统源码 自适应手机移动端
  9. SQL Server 默认跟踪 -- 捕获事件详解
  10. fiddler实现将http请求的js转为本地的js文件
  11. 58 集团面向亿级用户 IM 长连接服务设计与实践
  12. CSS动态绑定背景图片
  13. xml 入门 shema_02
  14. uniapp获取云服务空间 数据
  15. 正则表达式替换字符串中的${}里面的数据
  16. 插入排序(动图理解)
  17. 数据结构 笔记:图的遍历(BFS)
  18. 【贪玩巴斯】C++提高编程,掌握STL中最关键的容器技术~(三){map、set、list、queue、stack 五大容器一篇解决!} //2021-08-25
  19. Day13 多态、Object、抽象、接口
  20. linux定时重启tomcat shell脚本

热门文章

  1. 计算机网络-什么是因特网
  2. 【转载】联想ThinkPad X390笔记本装win7系统及BIOS设置方法
  3. 认证资料大全(十三)------ Juniper Networks认证列表
  4. Yahoo! User Interface Library,YUI,YUI下载,YUI学习,YUI是什么,YUI浅谈,YUI研究(2)
  5. ext 6.0开发实例二
  6. OCR财务报表识别方案应用
  7. 数据库-jdbc、spring-jdbc、spring-boot-starter-jdbc
  8. Matlab plotyy画2个纵坐标不同的图
  9. 《MySQL DBA:SSL连接》
  10. 解决GitHub/GitLab官网访问慢的问题