C语言break 关键字在 switch 语句中应注意什么?

一、问题

        switch 语句由 switch 分⽀点和多个 case 处理⼊⼜构成,每个 case 不具有处理互斥的功能,⼀个 case 执⾏完后,默认继续执⾏下⼀个 case。此时,如果不希望继续执⾏下⼀个 case,可以⽤ break 语句退出 switch 结构。break 不是 switch 中的固有组成部分,那么在switch 中使⽤ break 有哪些需要注意的地⽅呢?

二、解答

        (1)最容易出的问题是,忘记了 case 后⾯要写⼀个 break,其结果是多个 case 不能互斥,按顺序执⾏。例如:

    scanf("%d", &a);switch (a % 4){case 0:printf("A");case 1:printf("B");case 2:printf("C");case 3:printf("D");}

当程序运⾏时输⼊50,输出的结果是多少?

        有些⼈不假思索就得出C,其实应该是 CD。

        (2)每个 case 都写 break,其实没有这样的必要。例如,根据考试成绩 0~100 给出 对应等级,评级标准为优秀A:85~100,良好 B:70~84,及格 C:60~69,不及格D:0~59。代码如下。

#include <stdio.h>
int main()
{int a;printf("Input examanition score:\n");scanf("%d", &a);switch (a / 5){case 20:printf("A");break;case 19:printf("A");break;case 18:printf("A");break;case 17:printf("A");break;case 16:printf("B");break;case 15:printf("B");break;case 14:printf("B");break;case 13:printf("C");break;case 12:printf("C");break;default:printf("D");}return 0;
}

每个 case 后都加 break,这也是没必要的,可以把那些相同的结论放在⼀起,写成:

#include <stdio.h>
int main()
{int a;printf("Input examanition score:\n");scanf("%d", &a);switch (a / 5){case 20:case 19:case 18:case 17:printf("A");break;case 16:case 15:case 14:printf("B");break;case 13:case 12:printf("C");break;default:printf("D");}return 0;
}

三、总结

        C语⾔中的 switch 语句⽐较特殊,⼀个分⽀的结束是依赖 break 完成的。case 只决定程序到哪⾥执⾏,⽽不决定到哪⾥结束。结束位置由 break 来决定,没有 break 就⼀直执⾏到 switch 完整结构结束。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/705559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web安全学习笔记【17】——信息打点(7)

信息打点-APP资产&知识产权&应用监控&静态提取&动态抓包&动态调试 #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指…

C# 通过共享内存调用C++ 算法

需求&#xff1a; C#程序调用 C开发的dll. 一种C# 程序调用c 算法方案_算法怎么被c#调用-CSDN博客 上回书说到&#xff0c;将c算法封装为dll 插件&#xff0c;c加载后&#xff0c;暴露C风格接口&#xff0c;然后供C#调用。但是这样有几个问题&#xff1a; 1&#xff0c;一是…

【编程语言之·调试输出打印技巧】

系列文章目录 文章目录 前言一、调试打印输出开关1.1宏定义应用 二、打印错误的函数2.1 perror()2.2 strerror() 三、示例总结 前言 一、调试打印输出开关 1.1宏定义应用 示例1&#xff1a; #define DEBUG_ON 0 #if DEBUG_ON #define DEBUG(...) qDebug(__VA_ARGS__) #else …

【Python笔记-设计模式】中介者模式

一、说明 中介者模式是一种行为设计模式&#xff0c;减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互&#xff0c;迫使它们通过一个中介者对象进行合作。 (一) 解决问题 降低系统中对象之间的直接通信&#xff0c;将复杂的交互转化为通过中介者进行的间接交…

RK3568平台开发系列讲解(Linux系统篇)SPI 客户端通信

🚀返回专栏总目录 文章目录 一、spi_transfer二、spi_message三、初始化沉淀、分享、成长,让自己和他人都能有所收获!😄 SPI I/O模型由一组队列消息组成。我们提交一个或多个struct spi_message结构时,这些结构以同步或异步方式处理完成。单个消息由一个或多个struct sp…

Basisformer时间序列预测 锂电池SOC估计

Basisformer是一种基于Transformer架构的模型&#xff0c;用时间序列预测任务。 【Basisformer】时间序列预测 【锂电池SOC估计】 [1]采用自适应监督自监督对比学习方法学习时序特征 [2]通过双向交叉注意力机制计算历史序列和基准序列之间的相关系数 [3]最后通过相关系数…

动态规划(算法竞赛、蓝桥杯)--深入浅出的完全背包DP

1、B站视频链接&#xff1a;E09【模板】背包DP 完全背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N1010; int n,m; int v[N],w[N],f[N][N];int main(){scanf("%d%d",&n,&m);for(int i1;i<n;i){scanf("%d%d…

人像背景分割SDK,智能图像处理

美摄科技人像背景分割SDK解决方案&#xff1a;引领企业步入智能图像处理新时代 随着科技的不断进步&#xff0c;图像处理技术已成为许多行业不可或缺的一部分。为了满足企业对于高质量、高效率人像背景分割的需求&#xff0c;美摄科技推出了一款领先的人像背景分割SDK&#xf…

一款实用的.NET Core加密解密工具类库

前言 在我们日常开发工作中&#xff0c;为了数据安全问题对数据加密、解密是必不可少的。加密方式有很多种如常见的AES&#xff0c;RSA&#xff0c;MD5&#xff0c;SAH1&#xff0c;SAH256&#xff0c;DES等&#xff0c;这时候假如我们有一个封装的对应加密解密工具类可以直接…

【DeepStream】基于英伟达DeepStream框架进行算法开发(一):GStreamer基础

目录 简介deepstream 来源于 GStreamerGStreamer关于RTP相关代码 简介 在当今快速发展的人工智能和计算机视觉领域&#xff0c;英伟达的DeepStream框架提供了强大的工具和功能&#xff0c;帮助开发者快速部署和优化实时视频分析应用。本博客将重点介绍基于英伟达DeepStream框架…

maven复合工程生成

1. maven命令生成复合工程&#xff1a; ------- mvn archetype:generate -DgroupIdcom.caiwm -DartifactIdspring-learn -DarchetypeArtifactIdmaven-archetype-quickstart -DinteractiveModefalse 修改packing为pom ------ cd composite-parent mvn archetype:generate -Dgrou…

虚拟机JVM

虚拟机 1、定义jvm 假想计算机 运行在操作系统之上 和硬件之间没有直接交互 包括 一套字节码指令、寄存器、栈、垃圾回收、堆 一个存储方法域 jvm:承担一个翻译工作&#xff0c;动态的将java代码编译成操作系统可以识别的机器码。 从软件层面屏蔽了不同操作系统在底层硬件与指…

petalinux-config : command not found 和petalinux-build: command not found

发现这两个问题都是因为&#xff1a;没有先设置 petalinux 的作环境 先输入命令 先执行 source /opt/pkg/petalinux/2020.2/settings.sh 或者 sptl 然后切换目录&#xff0c;到相应的目录&#xff0c;就可以了

【设计模式】使用门面模式简化接口的复杂度

文章目录 1.概述2.门面模式的定义3.门面模式的应用场景4.总结 1.概述 门面模式&#xff08;Facade Pattern&#xff09;又叫做外观模式&#xff0c;它通过为子系统提供一个统一的高层入口的方式&#xff0c;达到简化复杂系统的使用以及降低客户端与子系统之间的耦合度的效果&a…

unity-unity2d基础操作笔记(二)0.5.101

unity2d基础操作笔记 五十一、canvas中的必须熟悉的属性五十二、如何调整canvas与游戏人物大小近似大小五十三、canvas中的canvas scaler介绍【概念】五十四、ui scale mode介绍【概念】五十五、为什么创建image后,canvas的范围要要远远大于游戏世界?五十六、图片常用操作【技…

LeetCode53题:最大子数组和(python3)

代码思路&#xff1a; 动态规划&#xff0c;使用动态规划如果上一个数是大于0&#xff0c;则加上&#xff1b;如果小于0直接用0。这样做的好处就是最终直接是最大子数组和。 class Solution:def maxSubArray(self, nums: List[int]) -> int:for i in range(1,len(nums)):nu…

Docker Volume

"Ice in my vein" Docker Volume(存储卷) 什么是存储卷? 存储卷就是: “将宿主机的本地文件系统中存在的某个目录&#xff0c;与容器内部的文件系统上的某一目录建立绑定关系”。 存储卷与容器本身的联合文件系统&#xff1f; 在宿主机上的这个与容器形成绑定关系…

【kubernetes】关于k8s集群中kubectl的陈述式资源管理

目录 一、k8s集群资源管理方式分类&#xff1a; &#xff08;1&#xff09;陈述式资源管理方式&#xff1a;增删查比较方便&#xff0c;但是改非常不方便 &#xff08;2&#xff09;声明式资源管理方式&#xff1a;yaml文件管理 二、陈述式资源管理方法&#xff1a; 三、ku…

leetcode移动零

leetcode移动零 Given an integer array nums, move all 0’s to the end of it while maintaining the relative order of the non-zero elements. Note that you must do this in-place without making a copy of the array. Example 1: Input: nums [0,1,0,3,12] Output…

linux下gcc编译时默认是32位还是64位,怎么指定为32or64?

本来是想研究一下long的字节大小sizeof(long)&#xff0c;于是写了代码&#xff1a; #include <stdio.h> int main() {long a 10;printf("%d\n", sizeof(a));return 0; } 我当时使用的是win10系统&#xff0c;使用的是vs 2022&#xff0c;然后对以上代码进行…