C语言Switch语句用法

news2024/11/15 23:39:13

C switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

语法

C 语言中 switch 语句的语法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}

switch 语句必须遵循下面的规则:

switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。
在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
流程图
在这里插入图片描述

C 中的 switch 语句

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   char grade = 'B';
 
   switch(grade)
   {
   case 'A' :
      printf("很棒!\n" );
      break;
   case 'B' :
   case 'C' :
      printf("做得好\n" );
      break;
   case 'D' :
      printf("您通过了\n" );
      break;
   case 'F' :
      printf("最好再试一下\n" );
      break;
   default :
      printf("无效的成绩\n" );
   }
   printf("您的成绩是 %c\n", grade );
 
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

做得好
您的成绩是 B

C 嵌套 switch 语句

您可以把一个 switch 作为一个外部 switch 的语句序列的一部分,即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

语法
C 语言中 嵌套 switch 语句的语法:


switch(ch1) {
   case 'A': 
      printf("这个 A 是外部 switch 的一部分" );
      switch(ch2) {
         case 'A':
            printf("这个 A 是内部 switch 的一部分" );
            break;
         case 'B': /* 内部 B case 代码 */
      }
      break;
   case 'B': /* 外部 B case 代码 */
}

实例

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
 
   switch(a) {
      case 100: 
         printf("这是外部 switch 的一部分\n");
         switch(b) {
            case 200:
               printf("这是内部 switch 的一部分\n");
         }
   }
   printf("a 的准确值是 %d\n", a );
   printf("b 的准确值是 %d\n", b );
 
   return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

这是外部 switch 的一部分
这是内部 switch 的一部分
a 的准确值是 100
b 的准确值是 200

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

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

相关文章

论索引的重要性

开篇小测验下面这样一个小SQL 你该怎么样添加最优索引两个表上现在只有聚集索引bigproduct 表上已经有聚集索引 ProductIDbigtransactionhistory 表上已经有聚集索引 TransactionID你是否一眼就能看出来呢&#xff1f;答案将在文章中逐步揭晓~~~简单粗暴的添加索引首先我们看一…

企业如何做好员工安全意识提升

背景&#xff1a; 近年来随着网络安全政策、技术的不断发展&#xff0c;国内企业对于安全的重视程度越来越高&#xff0c;安全建设投入力度越来越大&#xff0c;安全防御能力得到了明显的提升。然而&#xff0c;企业面临一个尴尬的问题就是&#xff0c;企业即使做了很多安全防…

Java还值得选择吗?

自1995年Java问世&#xff0c;到2023年已经差不多存在了28年。作为高级编程语言&#xff0c;他的生命周期相比很多编程语言都长&#xff0c;也见证了很多编程语言的辉煌时刻&#xff0c;不过Java始终都是名列前茅。 Java的主要优势在于其一次编写、随处运行。简单来讲&#xf…

185、【栈与队列】leetcode ——496. 下一个更大元素 I:单调栈-哈希表(C++版本)

题目描述 原题链接&#xff1a;496. 下一个更大元素 I 解题思路 本题与 739. 每日温度 的区别在于&#xff0c;需要先通过让nums1与nums2判定出为想等元素后&#xff0c;再去找nums2中更大的数。 因此&#xff0c;第一步需要找到想等数&#xff0c;第二步需要找到大于的数。…

快手电商新增商品信息诊断规则,对商家有何影响?

1、2022年快手短剧日活跃用户达2.6亿 新榜讯 近日&#xff0c;快手数据显示&#xff0c;2022年快手短剧日活跃用户达2.6亿&#xff0c;现在的付费用户数对比2022年4月增长超过480%&#xff0c;快手已经是最大的短剧消费市场。此外&#xff0c;2023年快手小游戏日活跃用户峰值超…

【Go】基于telegraf进行自定义插件开发(二)

基于telegraf进行自定义插件开发&#xff08;二&#xff09;前言正文设计开发过程单个服务的处理结构体同时定义了string和数值类型适配本机服务或者多个ip来源程序打包结语前言 书接上会&#xff0c;这次记录一下我基于telegraf进行的hdfs监控组件的开发工作&#xff0c;这其…

RabbitMQ实现延时队列

目录什么是延时队列延时队列的使用场景前提准备利用RabbitMQ实现延时队列延时队列优化利用RabbitMQ插件实现延迟队列什么是延时队列 延时队列&#xff0c;首先&#xff0c;它是一种队列&#xff0c;队列意味着内部的元素是有序的&#xff0c;元素出队和入队是有方向性的&#…

沃尔玛采购退款大额过不了的原因是什么?

市面上有很多伪装工具&#xff0c;但不是针对沃尔玛&#xff0c;很多软件方只是针对大众平台伪装&#xff0c;主要是方便程序开发人员调测系统程序&#xff0c;并不是能用于沃尔玛行业。而且每一个平台的风控是不—样的&#xff0c;我们技术团队从底层硬件环境开始配合软件控制…

【论文精读】MVSNet系列(2018-2022)总结

MVSNet系列总结1.MVSNet ECCV20182.RMVSNet CVPR20193.P-MVSNet ICCV20194.MVSCRF ICCV20195.PointMVSNet ICCV20192019年的这四篇文章各有特点&#xff0c;其中RMVSNet、PointMVSNet更是打开了可以继续沿着往下做的思路&#xff1a;6.cascade MVSNet CVPR20207.UCSNet CVPR202…

初识go变量,使用var和:=来声明变量,声明变量的三种方式

初识go变量,使用var和:来声明变量&#xff0c;声明变量的三种方式 Go语言的变量名由字母、数字、下划线组成&#xff0c;其中首个字符不能为数字。 tip:(Go语言中的变量的规范&#xff0c;也和其他高级语言相同) 声明变量的一般形式是使用 var 关键字&#xff1a; var 变量…

SpringCloud源码探析(二)-Nacos注册中心

1.概述 Nacos是Spring Cloud Alibaba中的核心组件之一&#xff0c;它提供了服务发现、服务配置和服务管理等功能&#xff0c;可以作为注册中心和配置中心使用。注册中心是微服务架构体系中的核心组件之一&#xff0c;Nacos比Eureka有着更强大的功能&#xff0c;它们都能提供服…

Java多线程系列-- ForkJoin框架,分治的艺术

前言 本篇是多线程系列中的一篇&#xff0c;我们在先前的一篇文章中回顾了线程池的主要知识 Java多线程基础–线程的创建与线程池管理 过去了很长时间&#xff0c;我们简单提要一下&#xff1a; 设计目的&#xff1a;简化线程的使用&#xff0c;管理与复用&#xff0c;避免…

Windows 远程桌面安全吗?电脑远程桌面的安全如何保障?

远程桌面会话在加密通道上运行&#xff0c;防止任何人通过监听网络来查看您的会话。 但是&#xff0c;在早期版本的 RDP 中用于加密会话的方法存在漏洞。 此漏洞可能允许使用中间人攻击 (link is external) 未经授权访问您的会话。 我们可以在 Windows 10、Windows 11 和 Wind…

学好数据结构与算法其实一点也不难

一. 初识算法 1.1 什么是算法&#xff1f; 定义 在数学和计算机科学领域&#xff0c;算法是一系列有限的严谨指令&#xff0c;通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous …

MSVCP140.dll下载及安装教程,dll修复方法

MSVCP140.dll是Windows操作系统中的一个DLL文件&#xff0c;许多程序依赖于它来正常运行。如果您尝试运行某个程序时&#xff0c;发现缺少MSVCP140.dll文件&#xff0c;那么您需要下载并安装它才能解决问题。本文将介绍如何MSVCP140.dll下载和安装MSVCP140.dll。 第一步&#x…

解决树莓派 bullseye (11) 系统无法通过 xrdp 远程连接的问题

我手上有一台树莓派 4B&#xff0c;使用官方镜像烧录器烧录老版本操作系统 buster (10) 时可以正常通过 Windows 远程桌面连接上&#xff0c;但换成最新的 bullseye (11) 系统后却无法正常连接远程桌面。 问题复现&#xff1a; 使用官方镜像烧录器烧录&#xff0c;配置用户名为…

CSDN 竞赛 32 期

CSDN 竞赛 32 期1、题目名称&#xff1a;传奇霸业2、题目名称&#xff1a;严查枪火3、题目名称&#xff1a;蚂蚁家族4、题目名称&#xff1a;运输石油小结1、题目名称&#xff1a;传奇霸业 传奇霸业&#xff0c;是兄弟就来干。 小春(HP a)遇到了一只黄金哥布林(HP x)。 小春每…

20个让你效率更高的CSS代码技巧

在本文中&#xff0c;我们想与您分享一个由各大css网站总结推荐的20个有用的规则和实践经验集合。有一些是面向CSS初学者的&#xff0c;有一些知识点是进阶型的。希望每个人通过这篇文章都能学到对自己有用的知识。好了&#xff0c;我们开始。1.注意外边距折叠与其他大多数属性…

从工地转行软件测试,拿下13k+年终奖是种什么体验?

最近&#xff0c;一则名为《我&#xff1a;毕业五年&#xff0c;存款5000。她:中传硕士&#xff0c;火锅店保洁》的视频走红网络&#xff0c;两位名校毕业生看似高开低走的就业经历&#xff0c;引起了很多人的共鸣。她们所传达的并不是所谓的躺平、摆烂&#xff0c;而是希望更多…

spark性能调优(一):Shuffle

Shuffle 一、配置项调优二、减少shuffle数据量三、避免shuffle何为shuffle? 集群中跨进程、跨节点的数据分发(Map的输出文件写到本地磁盘,Reducer把Map的输出文件拉到本地)为什么要shuffle? 准确的说,shuffle是刚需(业务场景决定的),分布式环境中,不同节点不能进行内存交换,只…