当分支比较少的时候我们使用if else语句解决,当分支比较多的时候,我们要使用switch case语句解决,针对分支的复杂性选择合适的程序解决。

当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的英文表示:

#include <stdio.h>
int main(){int a;printf("Input integer number:");scanf("%d",&a);if(a==1){printf("Monday\n");}else if(a==2){printf("Tuesday\n");}else if(a==3){printf("Wednesday\n");}else if(a==4){printf("Thursday\n");}else if(a==5){printf("Friday\n");}else if(a==6){printf("Saturday\n");}else if(a==7){printf("Sunday\n");}else{printf("error\n");}return 0;
}

运行结果:

Input integer number:3↙
Wednesday

对于上述情况,在实际开发中一般使用 switch 语句代替,请看下面的代码:

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

运行结果:

Input integer number:4↙
Thursday

switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下:

switch(表达式){case 整型数值1: 语句 1;case 整型数值2: 语句 2;......case 整型数值n: 语句 n;default: 语句 n+1;
}

执行过程:
1 . 首先计算“表达式”的值,假设为 m。

2 . 从第一个 case 开始,比较“整型数值1”和 m,如果它们相等,就执行冒号后面的所有语句,也就是从“语句1”一直执行到“语句n+1”,而不管后面的 case 是否匹配成功。

3 . 如果“整型数值1”和 m 不相等,就跳过冒号后面的“语句1”,继续比较第二个 case、第三个 case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设 m 和“整型数值5”相等,那么就会从“语句5”一直执行到“语句n+1”。

4 . 如果直到最后一个“整型数值n”都没有找到相等的值,那么就执行 default 后的“语句 n+1”。

注意,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句。例如:

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

运行结果:

Input integer number:4↙
Thursday
Friday
Saturday
Sunday
error

输入4,发现和第四个分支匹配成功,于是就执行第四个分支以及后面的所有分支。这显然不是我们想要的结果,我们希望只执行第四个分支,而跳过后面的其他分支。为了达到这个目标,必须要在每个分支最后添加break;语句。

break 是C语言中的一个关键字,专门用于跳出 switch 语句。所谓“跳出”,是指一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句;也就是说,整个 switch 执行结束了,接着会执行整个 switch 后面的代码。

使用 break 修改上面的代码:

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

运行结果:

Input integer number:4↙
Thursday

由于 default 是最后一个分支,匹配后不会再执行其他分支,所以也可以不添加break;语句。

最后需要说明的两点是:
1 . case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。请看下面的例子:

case 10: printf("..."); break;  //正确
case 8+9: printf("..."); break;  //正确
case 'A': printf("..."); break;  //正确,字符和整数可以相互转换
case 'A'+19: printf("..."); break;  //正确,字符和整数可以相互转换
case 9.5: printf("..."); break;  //错误,不能为小数
case a: printf("..."); break;    //错误,不能包含变量
case a+10: printf("..."); break;  //错误,不能包含变量

2 . default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

如果感觉不错的话请点赞哟!!!

C语言switch case语句详解相关推荐

  1. c语言switch case解释,C语言switch case语句详解

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

  2. c语言switch case语句范围,C语言switch case语句详解

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

  3. c语言 switch case 字符串,c语言switch case用法详解

    c语言switchcase用法详解 switch是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch是多分支选择语句.说得通俗点,多分支就 ...

  4. JS switch case语句详解

    switch 语句专门用来设计多分支条件结构.与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高.语法格式如下: switch (expr) { case value1 : s ...

  5. switch case用法详解

    switch case用法详解 switch 是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch 是多分支选择语句.说得通俗点,多分支就 ...

  6. c语言中case的作用,C语言switch case 语句

    switch 语句根据控制表达式的值,可以把程序流跳转到多个语句中的一个执行: switch (表达式) 语句 括号里的表达式具有整数类型,并且这里的语句就是该 switch 主体,它包括了多个 ca ...

  7. C语言--switch case 语句,case 后没有语句

    背景:在看 wireshark 的解析协议部分的源码时,发现很多的 switch case 语句,case 后没有语句 的情况,随处可见的这种情况,产生疑惑,报文解析就是很好的例子. 例如:wires ...

  8. case zhen语句_switch case语句,switch case用法详解

    switch 是"开关"的意思,它也是一种"选择"语句,但它的用法非常简单.switch 是多分支选择语句.说得通俗点,多分支就是多个 if. 从功能上说,sw ...

  9. C语言switch的用法详解

    C语言switch的意思是多项选择的意思. 如图所示.定义一个整数变量a的值为2 如图1所示定义a等于2所以输出case 2:后面的程序. 如果我们定义a=3的话.所以不满足case 1和 case ...

最新文章

  1. Android配置----Android开发环境搭建
  2. Linux下升级python2.4-python2.7
  3. Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
  4. 浙江省第二届大学生网络与信息安全竞赛在线预赛
  5. 多维数组的索引与切片_Numpy库使用入门(二)数据的索引和切片
  6. .NET Core CLI 的性能诊断工具介绍
  7. android中json插件,【Android原生插件】package.json中关于第三方aar的配置
  8. tcp 协议中发送窗口的大小应该是_TCP 协议中的三次握手与四次挥手
  9. MFC 进行界面设计与编程
  10. 阿里邮箱企业版在电脑PC客户端设置方法汇总
  11. 剑指offer: 两个栈实现一个队列
  12. undefind_undefined
  13. lighttpd支持AJAX吗,lighttpd
  14. 《极客与团队》一HRT实战
  15. 爱可聆网络电话 v9.1 免费下载
  16. 1 C C++初识
  17. 台灣人如何在大陸工作
  18. python总结与习题(一)
  19. Web网站模板-横向滚动个人简历响应式网站模板(HTML+CSS+JavaScript)
  20. MATLAB实现RSA加密解密

热门文章

  1. Altium Desinger - 生成Gerber文件
  2. 【卡雷尔杯】饮料换购
  3. JS计算数组内数值的总和
  4. 【综合】体育比赛高手榜
  5. Junit5中的参数化测试(Parameterized Tests)指南
  6. 《uniapp基础知识》学习笔记Day38-(Period2)全局文件一些常用的配置
  7. Meta标签实现阻止移动设备(手机、Pad)的浏览器双击放大网页
  8. oracle表交集并集,Oracle 并集交集差集
  9. css给非最后一个子元素添加样式
  10. 基于ssm和mysql的智能停车系统、javaweb实现bs结构的停车场智能车位出入管理