一.  switch语句

1.1 语法结构如下:

switch (表达式) {case 常量1:// 代码块1break;case 常量2:// 代码块2break;default:// 默认代码块
}

1.2 注意 :

  • 表达式必须是整型或枚举类型(如intchar)。
  • case后的常量必须与表达式类型兼容。
  • 学会使用break
  • default为可选分支,当所有case不匹配时执行。

二. switch与if-else的对比

  • 适用场景

    • switch适合多分支且条件为离散值(如枚举、固定常量)。
    • if-else更适合范围判断或复杂逻辑(如x > 10 && y < 20)。
  • 性能差异

    • switch可能被优化为跳转表(效率高),而if-else需逐条判断。

2.1 注意事项

  1. 穿透问题
    省略break会导致代码继续执行后续case,需谨慎使用。例如:

    switch (x) {case 1: cout << "1"; // 无break,继续执行case 2case 2: cout << "2"; break; // 输出"12"
    }
    

  2. 变量作用域(稍微复杂的使用)
    case块内定义的变量需用花括号限定作用域,否则会报错:

    switch (x) {case 1: {int y = 10; // 正确:作用域限于当前casebreak;}
    }
    

  3. default分支
    即使没有匹配项,也建议添加default以处理意外情况,增强鲁棒性。


三. 具体案例练习:

3.1 判断星期几的输出:

int day = 3;
switch (day) {case 1: cout << "Monday"; break;case 2: cout << "Tuesday"; break;case 3: cout << "Wednesday"; break; // 输出"Wednesday"default: cout << "Invalid day";
}


3.2 常见错误

  • case中声明变量未加花括号。
  • 遗漏break导致意外穿透。
  • 使用浮点数或字符串作为switch表达式(不合法)。

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

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

相关文章

编程与数学 03-002 计算机网络 16_网络编程基础

编程与数学 03-002 计算机网络 16_网络编程基础一、网络编程的基本概念&#xff08;一&#xff09;客户端与服务器模型&#xff08;二&#xff09;套接字&#xff08;Socket&#xff09;编程的基本原理二、基于TCP的网络编程&#xff08;一&#xff09;TCP套接字的创建与使用&a…

在纯servlet项目中,使用@WebFilter定义了多个filter,如何设置filter的优先级

在纯 Servlet 项目中&#xff0c;WebFilter 注解本身并不提供直接的属性来设置过滤器的优先级&#xff08;如过滤器执行的顺序&#xff09;。但是&#xff0c;你可以通过以下几种方式来控制过滤器的执行顺序&#xff1a;1. 通过 web.xml 配置过滤器的顺序在 web.xml 中&#xf…

关于鸦片战争的历史

19世纪&#xff0c;英国东印度公司获得了鸦片贸易的垄断权&#xff0c;而犹太人是东印度公司的主要投资人之一&#xff0c;英国东印度公司又将鸦片经营权外包给了犹太人。其中&#xff0c;塞法迪犹太人控制了主要的鸦片交易&#xff0c;著名的沙逊家族就是当时臭名昭著的犹太鸦…

Maven - 并行安全无重复打包构建原理揭秘

作者&#xff1a;唐叔在学习 专栏&#xff1a;唐叔的Java实践 标签&#xff1a; #Maven并行构建 #Maven多线程打包 #Java构建优化 #Maven性能调优 #CI/CD加速 #Maven反应堆原理 #避免重复编译 #高并发构建 文章目录一、遇到问题&#xff1a;并行打包会不会翻车&#xff1f;二、…

phpyun人才系统v7.1使用升级补丁怎么从授权版升级至vip版?我说下我的技巧有资源的可以看过来,这样就不用花钱麻烦官方了,新版本照样支持小程序源码

前:这个方法我只在Phpyun 的7.x系列使用过&#xff0c;低于这个版本的我暂时没有研究过&#xff0c;我感觉大同小异&#xff01; 一. 升级前提条件 无论现在你使用的是商业版还是学习版 想垮系列升级你必须有对应的升级补丁&#xff0c;比如说你是授权版或旗舰版 想升级到最新的…

P13014 [GESP202506 五级] 最大公因数

题目描述对于两个正整数 a,b&#xff0c;他们的最大公因数记为 gcd(a,b)。对于 k>3 个正整数 c1​,c2​,…,ck​&#xff0c;他们的最大公因数为&#xff1a;gcd(c1​,c2​,…,ck​)gcd(gcd(c1​,c2​,…,ck−1​),ck​)给定 n 个正整数 a1​,a2​,…,an​ 以及 q 组询问。对…

【机器学习-4】 | 集成学习 / 随机森林篇

集成学习与随机森林学习笔记 0 序言 本文将系统介绍Bagging、Boosting两种集成学习方法及随机森林算法&#xff0c;涵盖其原理、过程、参数等内容。通过学习&#xff0c;你能理解两种方法的区别&#xff0c;掌握随机森林的随机含义、算法步骤、优点及关键参数使用&#xff0c;明…

深入 Go 底层原理(十二):map 的实现与哈希冲突

1. 引言map 是 Go 语言中使用频率极高的数据结构&#xff0c;它提供了快速的键值对存取能力。虽然 map 的使用非常简单&#xff0c;但其底层的实现却是一个精心设计的哈希表&#xff0c;它需要高效地处理哈希计算、数据存储、扩容以及最关键的——哈希冲突。本文将解剖 map 的底…

Reinforcing General Reasoning without Verifiers

1.概述 DeepSeek-R1-Zero [10] 最近展示了使用可验证奖励的强化学习(RL)训练大型语言模型(LLMs)可以极大地提高推理能力。在这个可验证奖励的强化学习(RLVR)框架 [17] 中,LLM 生成一个推理过程(即,思维链,CoT),然后给出最终答案。一个基于规则的程序随后提取并评估…

Hyperbrowser MCP:重新定义网页抓取与浏览器自动化的AI驱动工具

在数据驱动的时代,网页内容的高效处理和自动化操作成为开发者和企业关注的焦点。Hyperbrowser MCP(Model Context Protocol Server)作为一款革命性的工具,通过AI与浏览器技术的深度融合,为网页抓取、结构化数据提取和浏览器自动化提供了全新的解决方案。无论你是需要从复杂…

关于Web前端安全防御XSS攻防的几点考虑

作为一位前端老鸟&#xff0c;总结一下web前端安全领域基础概念、防御策略、框架实践及新兴技术等几个维度的考虑。一、基础概念与核心漏洞1.XSS 攻击XSS&#xff08;跨站脚本攻击&#xff09;是 Web 前端安全中最常见的威胁之一&#xff0c;其核心是攻击者将恶意脚本注入到网页…

eSIM技术深度解析:从物理芯片到数字革命

当苹果公司在2018年首次在iPhone XS系列中引入eSIM技术时&#xff0c;许多用户可能并未意识到这个看似微小的改变将带来怎样的技术革命。从1991年第一张信用卡大小的SIM卡&#xff0c;到今天仅有5mm x 5mm的eSIM芯片&#xff0c;这不仅仅是尺寸的缩小&#xff0c;更是移动通信技…

通俗易懂解释Java8 HashMap

我们来用通俗易懂的方式解释一下 Java 8 中 HashMap 的原理&#xff0c;让你对它的结构、运行机制有清晰的理解。&#x1f333; 什么是 HashMap&#xff1f; HashMap 是 Java 中非常常用的数据结构&#xff0c;用于存储键值对&#xff08;key-value&#xff09;。你可以把它理解…

macOS安装配置Unbound DNS完整指南

文章目录macOS安装配置Unbound DNS完整指南&#x1f3af; 为什么选择Unbound&#xff1f;&#x1f4cb; 系统要求&#x1f680; 安装步骤1. 使用Homebrew安装2. 查看安装信息⚙️ 基础配置1. 备份默认配置2. 创建基础配置文件3. 基础配置内容配置53端口版本&#xff08;高级用户…

学习模板元编程(2)std::true_type/false_type

目录 实现原理 应用场景 条件编译 通过特化和继承&#xff0c;实现std::is_xxx系列 思路 举例 例子1&#xff0c;is_bool 例子2&#xff0c;is_ptr 实现原理 std::true_type/false_type是模板intergral_constant的两种实现&#xff1a; using true_type integral_co…

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models论文阅读笔记

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 摘要 本文探索了思维链&#xff08;chain of thought&#xff09;&#xff0c;即一系列中间推理过程&#xff0c;可以有效地增强大语言模型的复杂推理能力。 在三个大型语言模型上的实验表明&#xff0…

华为核心交换机S7700的内存OID

华为S7700系列交换机 SNMP内存相关OID说明 以下列出了华为S7700核心交换机在SNMP v2c下可用的内存相关OID,包括CPU内存利用率、物理内存总量、已用内存和空闲内存,并给出每个OID的功能描述、数据类型、单位、使用说明等信息。 1. CPU内存利用率(处理器内存占用百分比) OID名…

中州养老Day02:服务管理护理计划模块

本日任务:服务管理的后端开发 1.学习:护理项目 (1)评估开发工期的思路和注意事项 全面熟悉项目,了解项目重点,设置开发优先级 比如,在下面图片的接口文档中版本有1.0,2.0,3.0也就是功能的初代,二代,三代,所以我们在大致浏览所有功能后,要优先关注初代功能的实现 开发计划 …

JavaScript:Ajax(异步通信技术)

一、Ajax 核心概念Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种异步通信技术&#xff0c;核心特点&#xff1a;无刷新更新&#xff1a;无需重新加载整个页面异步处理&#xff1a;后台发送/接收数据不阻塞用户数据格式&#xff1a;支持 XML/JSON/HTML/纯…

leetcode 118. 杨辉三角 简单

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。示例 1:输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows 1 输出: [[1]]提示:1 < numRows…