switch case语法

switch case语法基本语法结构不要拿青龙偃月刀去削苹果既然已经有了分支语句 那为什么还要语句呢 语句也是一种分支语句 常常用于多分支的情况 这种多分支 一般指的是很多很多分支 而且判定条件主要以整型为主 如 输入数字 输出相应的星期几以上的程序 如果用来写 会非常的繁琐 决定了从哪开始执行语句 所以说是判定功能具体效果看上面图片那如果没有会发生什么呢 我们删除了的 看效果可以看到 当我们输入的时候 开始执行 然后竟然也执行了 后续也执行 直到星期五结束后 没再执行 当我们输入的时候 从开始执行 直到星期五结束 可以发

switch case组合

基本语法结构

switch(整型常量/整型变量/整型表达式){ 
    case var1: break; case var2: break; case var2: break; default: break; } 

不要拿青龙偃月刀去削苹果

既然已经有了if else分支语句,那为什么还要switch 语句呢?

switch 语句也是一种分支语句,常常用于多分支的情况。这种多分支,一般指的是很多很多分支,而且判定条件主要以整型为主:

如:输入数字,输出相应的星期几

#include  
     int main() { 
    int day = 0; do { 
    printf("请输入:>"); scanf("%d", &day); switch (day) { 
    case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期七\n"); break; case 0: printf("退出\n"); break; default: printf("输入错误,请重新输入\n"); break; } while (day); return 0; } 

以上的程序,如果用if else来写,会非常的繁琐!

case的作用是什么?

case本质是进行判定功能,与switch里面的语句相比较,如果相同,则执行语句,不相同则找下一个case比较,直至所有case语句都不与switch相同,此时执行default语句。

image-20220603215700927

case决定了从哪开始执行语句,所以说case是判定功能

break的作用是什么?

break本质是执行分支功能

具体效果看上面图片

那如果没有break会发生什么呢?

#include  
     int main() { 
    int day = 0; do { 
    printf("请输入:>"); scanf("%d", &day); switch (day) { 
    case 1: printf("星期一\n"); case 2: printf("星期二\n"); case 3: printf("星期三\n"); case 4: printf("星期四\n"); case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期七\n"); break; case 0: printf("退出\n"); break; default: printf("输入错误,请重新输入\n"); break; } } while (day); return 0; } 

我们删除了1-4break,看效果

image-20220603220227329

可以看到,当我们输入1的时候,case 1开始执行,然后case 2竟然也执行了,后续也执行,直到星期五结束后,没再执行。

当我们输入2的时候,从case 2开始执行,直到星期五结束。

可以发现,1-4没有break,而5break,所以输出星期五执行,再执行break,就不再执行下面的语句了。

这恰恰说明了上面case的作用:决定了从哪开始执行语句。

但是现在的重点是break,可以发现当没有break时,会继续执行下一条case语句,当遇到break时,不再执行。

这恰恰就是break的分支功能。

其实switch语句是没有任何功能的,真正使得switch结构实现类似if else功能的是由于casebreak语句的配合。

上面的程序还可以改造成如下:

//这就是多个不同的case,想执行同一条语句的做法 #include  
     int main() { 
    int day = 0; do { 
    printf("请输入:>"); scanf("%d", &day); switch (day) { 
    case 1: case 2: case 3: case 4: case 5: printf("周内\n"); break; case 6: case 7: printf("周末\n"); break; case 0: printf("退出\n"); break; default: printf("输入错误,请重新输入\n"); break; } } while (day); return 0; } 

image-20220603221102287

关于break还有一个很容易混淆的地方,就是一般人在一般情况下在case后面要么不写break,要么只写break,万不得已不要写其它,特别是return,极易有可能使得用户在调试时忽略,从而不能发现问题所在!!!

case后面的值有什么要求吗?

switch语句必须是整型常量/整型变量/整型表达式

不能够是有效的布尔值,

int x = 10; switch (0 == x)//因为这样得表达式,结果只有0/1,下面的case也只能是0/1才能够与之匹配 { 
    default: break; } 

case语句必须是整型常量/整型常量表达式,类似const修饰的常量称为只读变量也不可以!

image-20220603222100891

case语句的排列顺序问题

按字母或数字顺序排列各条case语句

就像上面的程序,当所有case语句作用相当,没有什么特别的重要性差别时,一般按顺序排列case语句,像1、2、3、4或者A、B、C、D等等。

把正常情况放在前面,而把异常情况放在后面

也如同上面的程序,我们把正常的星期一到星期七写在前面,而把退出写在最后。

按执行频率排列case语句

将使用频率高的case语句放在前面,就如同把畅销货放在售卖最显眼的地方一样。这样可以使得我们在调试(一般是频率较高的)时,能快速的找到该case语句。

default语句相关问题

先说一句,default语句可写可不写,但是,强烈建议无论如何都写上。这就谈到default语句的作用了。

作用:当所有的case语句都不与switch语句匹配时,这时执行default语句。强烈建议写在最后!!!

default语句的位置是非常自由的

image-20220603224310309

但是有一点,当case入口已开启,且没有break,且default紧随其后,也是会执行default语句的

image-20220603224514923

但是还要再说一遍:强烈建议无论如何都加上default语句,并且写在最后!!!

使用case语句的一些注意事项

简化每种情况对应的操作

也就是说,在case语句和break语句中间的语句,越简洁越好,

#include  
     int main() { 
    int n = 0; scanf("%d", &n); switch (n) { 
    case 1: printf("hello world!\n"); printf("hello world!\n"); printf("hello world!\n"); printf("hello world!\n"); break; case 2: break; case 3: break; default: break; } return 0; } 

假设case中有四条语句,尽量将这些语句封装成一个函数,使得case中的语句尽量简洁

#include  
     void show() { 
    printf("hello world!\n"); printf("hello world!\n"); printf("hello world!\n"); printf("hello world!\n"); } int main() { 
    int n = 0; scanf("%d", &n); switch (n) { 
    case 1: show(); break; case 2: break; case 3: break; default: break; } return 0; } 

还有一点,在case后定义变量是不可以的,如果非要定义变量,那么就得加{}

image-20220604082852335

#include  
     int main() { 
    for (int i = 0; i < 10; i++) { 
    int tmp = i;//这里的tmp就是刻意制造的变量,非常不建议这样干 switch (tmp) { 
    default: break; } } return 0; } 

应该是这样

#include  
     int main() { 
    for (int i = 0; i < 10; i++) { 
    switch (i)//这样会比上面好很多 { 
    default: break; } } return 0; } 

default子句只用于检查真正的默认情况

有时候,只剩下最后一种情况需要处理,但是你却偷懒,没有用case处理这种情况,而是交给了default,这样是非常不妥的,比如说,上面那个星期一到星期七的程序,我们只用case处理了星期一至六,而把星期七交给了default是非常不好的。因为这样将失去case语句的标号所提供的自说明功能,而且丧失了使用default子句处理错误情况的能力。所以我们不能够偷懒去少写代码,而应该真正用case处理每一种情况,而将真正的默认情况交给defualt比如说输入错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208001.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午12:35
下一篇 2026年3月19日 下午12:36


相关推荐

  • 超干货!手把手教你如何在本地部署 DeepSeek,还能实现可视化对话,快速掌握,高效上手!

    超干货!手把手教你如何在本地部署 DeepSeek,还能实现可视化对话,快速掌握,高效上手!

    2026年3月16日
    2
  • wpa2 wep_wep wpa wpa2的区别

    wpa2 wep_wep wpa wpa2的区别今天来探究一下WiFi的几种加密方式。从最简单的WEP开始。WEP(WiredEquivalentPrivacy,有线等效保密)WEP加密是最早在无线加密中使用的技术,新的升级程序在设置上和以前有点不同,功能当然比之前丰富一些,下面让我们来看看如何使用WEP。当在无线“基本设置”里面“安全认证类型”选择“自动选择”、“开放系统”、“共享密钥”这三项的时候,使用的就是WEP加密技术,“自动…

    2025年7月21日
    4
  • ftp服务器软件 性能对比,常用ftp服务器软件介绍[通俗易懂]

    ftp服务器软件 性能对比,常用ftp服务器软件介绍[通俗易懂]导读:对于服务器远程文件的管理,最常见的就是使用ftp服务器软件进行管理,上传下载文件等操作,可以轻松实现本地上传文件到服务器,以及从服务器下载文件到本地,快捷方便简单,接下来我们重点介绍几款比较好用的ftp服务器软件,供大家参考,下面介绍的是在win系……对于服务器远程文件的管理,最常见的就是使用ftp服务器软件进行管理,上传下载文件等操作,可以轻松实现本地上传文件到服务器,以及从服务器下载文件…

    2025年10月27日
    7
  • tensorflow2.2_实现Resnet34_花的识别[通俗易懂]

    tensorflow2.2_实现Resnet34_花的识别[通俗易懂]残差块    Resnet是由许多残差块组成的,而残差块可以解决网络越深,效果越差的问题。    残差块的结构如下图所示。其中:weightlayer表示卷积层,用于特征提取。F(x)F(x)F(x)表示经过两层卷积得到的结果。xxx表示恒等映射。F(x)+xF(x)+xF(x)+x表示经过两层卷积后与之前的卷积层进行结合。所以F(x)F(x)F(x)和xxx代表的是相同的信号。作用:将浅层网络的信号递给深层网络,使网络得到更好的结果。批量归一化(BatchNormaliz

    2026年4月17日
    4
  • java导出文件名乱码

    java导出文件名乱码问题背景 javaWeb 项目导出文件名乱码 本地 window7 调试项目导出文件名正常 线上 linux centos7 环境导出文化名乱码 依据百度经验做尝试 1 使用 StringnewStr newString xxx getByte 字符类型 1 字符类型 2 并没有起到任何积极作用 后来得知 此方法的用途是这样的 java 程序获取到一个字符串 各种可能的途径获取 发现此字符串是乱码的 可以直接控制台打出来或者 debug 看 然后可以用这个 newString 方法将乱码的字

    2026年3月26日
    1
  • 如何为pycharm配置Python解释器_anaconda3添加环境变量

    如何为pycharm配置Python解释器_anaconda3添加环境变量@本文来源于公众号:csdn2299,喜欢可以关注公众号程序员学府文章目录1.python解释器安装2.配置环境变量3.pycharm安装4.pycharm设置及使用4.1pycharm设置4.2pycharm使用1.python解释器安装下载地址:https://www.python.org/打开官网,点击downloads,选择操作系统,以windows为例:选择python2与python3解释器版本(以python3.6.6及python2.7.16为例):以python3.6.6为例

    2022年8月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号