switch语句用于基于不同条件执行不同动作。

语法格式:

switch (变量表达式)

{

case 常量1:

语句;break;

case 常量2:

语句;break;

case 常量3:

语句;break;

...

case 常量n:

语句;break;

default:

语句;break;

}

switch语句是一个条件选择语句,找到相同的case值做为执行后面的程序入口;若所有的case都不满足,则找default入口;若未找到default入口则退出整个switch语句。

case 后的常量指的是常量表达式。在一个特定的 switch 语句中,每个 case 常量都必须具有独一无二的值,不可以重复。但是 switch 语句可以包含多个 case 标签。

default 标签是可选的,可以放在 switch 语句体内任何位置。如果没有 default 标签,并且没有任何 case 常量符合 switch 语句控制表达式的计算结果,那么 switch 语句体中的语句都不会执行。在这种情况下,程序流会转而执行 switch 语句体后面的语句。

switch 语句体通常是一个从 case 标签开始的语句块。如果在第一个 case 标签之前有语句,这些语句并不会被执行。

C 语言的标签只用于标识程序流可能跳转到的目的地。这些标签本身对程序没有影响。因此,从 switch 跳转到第一个符合条件的 case 标签之后,程序会继续顺序执行,不受其他标签的影响。

如果在这个符合条件的 case 标签之后,其他 case 标签中的语句应该被忽略,就应该在所执行的最后一条语句后,加上 break 语句,使得程序流直接跳转到 switch 语句体的后面。

如果需要在 switch 语句内声明变量,那么这些变量应该被声明在嵌套的内部语句块中,如下所示:

switch ( x )

{

case C1: { int temp = 10;    // 声明temp,仅为该case使用

/* ... */

}

break;

case C2:

/* ... */

}

在 switch 表达式中,应用了整数提升。case 常量被转换为匹配 switch 表达式计算结果的类型。

也可改用 else if 语句来实现 switch/case 语句效果。但是如果依据一个整数表达式的值来判断程序流,则应该使用 switch/case 语句,这种方式可以提高代码的可阅读性。

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

在switch语句中,case后的标号只能是什么?相关推荐

  1. c语言case标号是连续的吗,在switch语句中,case后的标号只能是什么?_后端开发...

    在switch语句中,case后的标号只能是常量表达式.在一个特定的switch语句中,每一个case常量都必须具有举世无双的值,不能够反复.然则switch语句能够包括多个case标签. switc ...

  2. c语言switch case 空,switch语句中case为空时的意义

    switch语句中case为空时的意义 一成绩单的程序 void main() {float score; printf("input score:\n"); scanf(&quo ...

  3. SWITCH语句中如果执行了一条CASE语句是空的后,程序会

    SWITCH语句中如果执行了一条CASE语句是空的后,程序会继续执行到下一个语句,直到有break或return,(直到遇到跳出或停止语句时才会停止) #include <stdio.h> ...

  4. Go 学习笔记(62)— Go 中 switch 语句中的 switch 表达式和 case 表达式之间的关系

    switch 语句对 switch 表达式的结果类型,以及各个 case 表达式中子表达式的结果类型都是有要求的. 毕竟,在 Go 语言中,只有类型相同的值之间才有可能被允许进行判等操作. 1. sw ...

  5. switch语句中在case块里声明变量会遇到提示“Expected expression before...的问题

    switch语句中在case块里声明变量会遇到提示"Expected expression before..."的问题 例如在如下代码中 1 case constant: 2 in ...

  6. php switch case default,switch语句中必须有default选项吗?

    switch语句中不是必须有default选项的.switch语句首先会找满足条件的case值做为执行后面的程序入口,若所有的case都不满足,则找default入口,若未找到则退出整个语句:defa ...

  7. oracle的switch+case语句吗,2.7 switch 语句中的 case 范围

    2.7 switch 语句中的 case 范围 在标准 C 中,switch 语句中的 case 标签只能有一个关联值.Solaris Studio C 允许使用某些编译器中使用的扩展(称为 case ...

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

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

  9. c语言中的switch语句中的break和continue的作用

    #include <stdio.h>int main() {int k;char c;for(k=1,c='A'; c < 'F'; k++){switch(++c){case'A' ...

最新文章

  1. Scala的类和对象
  2. 可以直接反编译Mips架构的IDA版本(无需安装脚本)
  3. maven检测依赖_检测Maven依赖中介
  4. respondsToSelector的相关使用
  5. Mysql用户访问工作原理
  6. html5游戏面试题,关于HTML5的十大面试题
  7. 常用名词理解(APK,SDK,JDK,API,DLL)
  8. python微信聊天机器人_Python快速搭建会学习的微信聊天机器人
  9. Excel自定义格式日期计算问题
  10. TrustedInstaller
  11. 黄金价格走势软件下载,国内十大现货黄金正规平台排名(2022最新榜单)
  12. ransomware(假的勒索病毒)逆向分析
  13. Ubuntu 16.04 使用校园网客户端上网
  14. 力扣今日打卡数独解答
  15. Resetting a lost Admin password
  16. 老照片修复怎么修?这三个方法可以让你实现修复操作
  17. 高性能Nginx介绍(二)
  18. 营收大增成Q2财报关键词,飞轮效应成达达集团业绩增长驱动力
  19. FAQ| 近期常见使用问题汇总
  20. NiuKe_SH17分玩具题

热门文章

  1. input发送a.jax_JAX-RS 2.0:自定义内容处理
  2. 非静态方法可以访问Java中的静态变量/方法吗?
  3. java线程死锁_Java并发:隐藏线程死锁
  4. lambdas for_Wordcounter,使用Lambdas和Fork / Join计算Java中的单词数
  5. 使用DynamoDB映射器将DynamoDB项目映射到对象
  6. 仍然不安全:变成了Java 9功能的Java 6中的主要错误
  7. 如何编写Java代理
  8. 嵌入式Jetty和Apache CXF:借助Spring Security来保护REST服务
  9. 使用Spring Security的多租户应用程序的无状态会话
  10. Java 8功能接口–实现Scala类型的随机思维