C语言让if语句与switch 话句的优缺点是什么?

一、问题

        if语句和 switch 语句都是⽤来构成选择结构的。switch 语句⽤于构成⼀个多分⽀选择结构,if语句⽤于构成只有两个分⽀的选择结构,通过if语句的嵌套,也可以构成多分⽀选择结构。那么,什么时候使⽤if语句的嵌套,什么时候使⽤ switch 结构,⼆者各有什么优缺点呢?

二、解答

        if语句由多个条件构成多分⽀,⽽ switch 由⼀个表达式构成多分⽀,它基于表达式的具体取值⽽构成多分⽀。这样看来,可以由 switch 构成的多分⽀结构,必须能表示成由⼀个表达式的值控制执⾏流程的形式。对于由不同条件嵌套构成的多分⽀结构,⽆法⽤ switch来表示。

        ⽽这种可由⼀个表达式控制的多分⽀结构,其表达式的值还必须能表⽰成有限个离散点,或者取值的⼀个⽅向可以为⽆限,因为此时可以⽤ default 处理。但 switch 中只能有 ⼀个 default,所以它不适合处理两个⽅向上都是⽆限值的情况,这时只能借助 if 的嵌套来实现。

        如果问题性质具有明显的多个离散点,每个点处执⾏不同处理的特点,这时⽤ switch 语句⽐⽤多个if语句程序结构要清晰很多。

        总之,if语句结构灵活,能处理任意多分⽀;switch 结构简单,能处理的问题有限, 但⽤ switch 实现的程序逻辑结构清晰。

三、总结

        两个结构处理复杂问题时各有千秋,使⽤时可以灵活应⽤,但处理简单结构,有if...else 就够⽤了,不要⽤ switch 去处理双分⽀,这和⽤⽜⼑杀鸡没什么区别。

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

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

相关文章

面试题整理2

文章目录 前言1.Redis数据结构及其使用场景2.Redis缓存穿透、击穿、雪崩如何发生及解决方案3.SpringBoot启动类注解的底层实现原理4.docker常用命令5.Linux常用命令6.Java线程实现的几种方式7.Mybatis框架中#{}和${}的区别8.MySQL常见索引和区别9.乐观锁怎么实现10.SpringCloud…

合并报表系统

系统是由一系列不同机能的部件,经过有机组合以后完成特定功能,具有独特特性的产品 对于合并报表系统,其功能就是合并报表,那拆分下,合并报表需要什么组件呢 1.数据集成,合并是把一系列分子公司数据集成到…

React18源码: Fiber树中的优先级与帧栈模型

优先级{#lanes} 在全局变量中有不少变量都以Lanes命名 如workInProgressRootRenderLanes, subtreeRenderLanes其作用见上文注释它们都与优先级相关 React中有3套优先级体系,并了解了它们之间的关联关系现在来看下fiber树构造过程中,车道模型Lane的具体应…

18个惊艳的可视化大屏(第六辑):地图焦点

本期带来的都是以地图作为视觉焦点的可视化大屏页面。

动态规划课堂1-----斐波那契数列模型

目录 动态规划的概念: 动态规划的解法流程: 题目: 第 N 个泰波那契数 解法(动态规划) 代码: 优化: 题目:最小花费爬楼梯 解法(动态规划) 解法1: 解…

独立站建站全攻略:从0到1打造专属在线商业平台

独立站建站全攻略:从0到1打造专属在线商业平台 随着互联网的普及和发展,越来越多的企业和个人开始认识到拥有一个独立站的重要性。独立站不仅可以提升品牌形象,还能为企业带来更多的流量和潜在客户。本文将为大家详细介绍独立站建站的全过程…

如何实现不同 Vue 项目的 npm 和 Node.js 环境进行隔离

方法一:使用 nvm(Node Version Manager) nvm 是一个用于管理多个 Node.js 版本的工具。通过 nvm,你可以为每个 Vue 项目安装和使用不同版本的 Node.js 和 npm。首先,安装 nvm:对于 macOS 和 Linux&#xf…

【深度学习笔记】卷积神经网络——汇聚层(池化层)

汇聚层(池化层) 通常当我们处理图像时,我们希望逐渐降低隐藏表示的空间分辨率、聚集信息,这样随着我们在神经网络中层叠的上升,每个神经元对其敏感的感受野(输入)就越大。 而我们的机器学习任…

VsCode的leetcode插件无法登录

前提 想使用VsCode的leetcode插件进行刷题,然后按照网上的教程进行安装下载,但是到了登录这一步,死活也登录不了,然后查看log一直报的错误是invalid password。 解决方法 首先确定在插件中设置的站点是Leetcode中国&#xff0c…

图像处理新框架 | 语义与复原指令双引擎,谷歌研究院提出文本驱动图像处理框架TIP

本文首发: AIWalker 欢迎关注AIWalker,底层视觉与基础AI技术 https://arxiv.org/abs/2312.14091 https://github.com/Picsart-AI-Research/HD-Painter 基于文本到图像扩散模型的空前成功,文本引导图像修复的最新进展已经可以生成非常逼真和视觉上合理的结…

C++面试:linux系统性能监控命令的使用

目录 1. top 2. vmstat 3. iostat 4. mpstat 5. netstat 6. sar 7. htop 8. dstat 9. free 10. lsof 11. pidstat 12. nmon 13. iftop 14. glances 面试准备小贴士 在Linux系统管理和故障排查中,使用性能监控工具是非常重要的。这些工具可以帮助你理…

centos7部署单机项目和自启动

centos7部署单机项目和服务器自启动 1.安装jdk和tomact1.1上传jdk、tomcat安装包1.2解压两个工具包1.3.配置并且测试jdk安装1.4.启动tomcat1.5.防火墙设置1.6配置tomcat自启动 2.安装mysql2.1卸载mariadb,否则安装MySql会出现冲突(先查看后删除再查看)2.2在线下载My…

【爬虫逆向实战篇】定位加密参数、断点调试与JS代码分析

文章目录 1. 写在前面2. 确认加密参数3. 加密参数定位4. XHR断点调试 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向…

python-分享篇-用python制作九宫格切图器

文章目录 代码效果 代码 import tkinter as tk from PIL import Image,ImageTk import sys import tkinter.filedialog#先将图片填充为正方形 def fill_image(image): width, height image.size #比较图片的宽和高,选取值较大的作为新图的宽 newImage_width wid…

仿12306校招项目-项目业务和架构

目录 业务图 用户管理 业务难点 1. 如何确定用户注册信息的真实性 2. 面对亿级用户量 3. 支持多种登录方式会造成读请求扩散,需要解决用户定位问题 4. 高并发场景下缓存穿透问题需要有效解决,避免数据库压力过大 5. 明文存储用户敏感信息会造成安…

抽象的java

Consider defining a bean of type org.springframework.mail.MailSender in your configuration. 报错原因: 第一个:未安装对应的依赖 第二个:对应配置问题 背景:用springboot-java完成邮箱发送 第一个问题解决方法&#xff1…

实战一个 Jenkins 构建 CI/CD流水线 的简单配置过程哈

引言:上一期我们讲述了gitlabCI/CD工具的介绍,工具之争,本期我们介绍Jenkins CI/CD 目录 一、Jenkins介绍 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 二、安装Jenkins 1、安装JDK 2、安装Jenkins 1、上传压缩包 2、…

Spark之【数据倾斜】

Spark程序运行变慢,十有八九出现了数据倾斜。那么什么是数据倾斜、导致数据倾斜的原因以及如何克服它以保持Spark应用程序的最佳性能呢? 什么是数据倾斜? Apache Spark中的数据倾斜指的是,在处理的数据其在不同分区之间分布不均…

基于django的购物商城系统

摘要 本文介绍了基于Django框架开发的购物商城系统。随着电子商务的兴起,购物商城系统成为了许多企业和个人创业者的首选。Django作为一个高效、稳定且易于扩展的Python web框架,为开发者提供了便捷的开发环境和丰富的功能模块,使得开发购物商…

spring security 防止已经完成认证的会话再次访问login页面

版本 spring-security:6.2.1 方案 添加过滤器检查会话认证信息,如果包含非匿名用户的认证信息则调用认证成功处理器 final static String URL_LOGIN "/login"; final AuthenticationSuccessHandler authenticationSuccessHandler new SavedRequestA…