当前位置: 首页 > news >正文

从C++0基础到C++入门(第十五节:switch语句)

一.  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.dtcms.com/a/311934.html

相关文章:

  • 工具包:位图格式一键生成可无限放大的矢量图SVG/EPS及CAD文件DXF
  • 我的世界模组开发教程——物品item(1)
  • 建筑施工场景安全帽识别误报率↓79%:陌讯动态融合算法实战解析
  • 深入 Vue v-model
  • SpringBoot启动项目详解
  • MC0351区间询问和
  • MybatisPlus-自动生成代码
  • 【走遍美国精讲笔记】第 1 课:林登大街 46 号
  • 深入 Go 底层原理(四):GMP 模型深度解析
  • 编译器与解释器:核心原理与工程实践
  • Linux I/O 系统调用完整对比分析
  • linux source命令使用详细介绍
  • [qt]QTreeWidget使用
  • JAVA国际版同城服务同城信息同城任务发布平台APP源码Android + IOS
  • 【设计模式】 原则
  • AI驱动SEO关键词智能进化
  • 具身智能VLA困于“数据泥潭”,人类活动视频数据是否是“破局之钥”?
  • 【Python修仙编程】(二) Python3灵源初探(10)
  • Spring 全局异常处理机制:多个 @ControllerAdvice 与重复 @ExceptionHandler
  • CMake 命令行参数完全指南 (1)
  • 数据结构1-概要、单向链表
  • JVM中的垃圾回收暂停是什么,为什么会出现暂停,不同的垃圾回收机制暂停对比
  • 知识随记-----用 Qt 打造优雅的密码输入框:添加右侧眼睛图标切换显示
  • Ubuntu系统间SSH控制详细指南
  • 由浅入深使用LangGraph创建一个Agent工作流
  • 零拷贝技术:高效数据传输的核心原理与应用
  • 用 JavaSwing 开发经典横版射击游戏:从 0 到 1 实现简易 Contra-like 游戏
  • 20250801-2-Kubernetes 存储-节点本地数据卷_笔记
  • IMAP电子邮件归档系统Mail-Archiver
  • UE5 Insight ProfileCPU