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

【19】C语言多向分支Switch case语法详解

【19】C语言多向分支Switch case语法详解

文章目录

  • 1.基本语法结构
  • 2.完整代码示例
  • 3.重要技巧
    • 3.1 case穿透(Fall-through)
    • 3.2 default子句
    • 3.3 嵌套switch语句
    • 3.4 枚举类型与switch结合
  • 4. switch vs if-else 选择建议

Switch语句是C语言中用于实现多向分支选择的结构,比多个if-else语句更简洁、高效。

1.基本语法结构

switch (表达式) {case 常量表达式1:语句序列1;break;case 常量表达式2:语句序列2;break;// 更多case...default:默认语句序列;break;
}
  1. switch表达式
  • 必须是整型表达式(int, char, enum等)
  • 不能是浮点型、字符串或其他复杂类型
  1. case标签
  • 必须是常量表达式,不能是变量
  • 值必须唯一,不能重复
  • 可以是字符常量(自动转换为ASCII码)
  1. break语句
  • 用于退出整个switch结构
  • 如果省略break,会继续执行下一个case("穿透"现象)

2.完整代码示例

示例1:基础用法

#include <stdio.h>int main() {int day = 3;switch (day) {case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期日\n");break;default:printf("无效的天数\n");break;}return 0;
}

示例2:字符类型switch

#include <stdio.h>int main() {char grade = 'B';switch (grade) {case 'A':printf("优秀!\n");break;case 'B':printf("良好\n");break;case 'C':printf("及格\n");break;case 'D':printf("不及格\n");break;default:printf("无效等级\n");break;}return 0;
}

3.重要技巧

3.1 case穿透(Fall-through)

故意省略break,让多个case共享同一段代码:

#include <stdio.h>int main() {int month = 2;int days = 0;switch (month) {case 1: case 3: case 5: case 7: case 8: case 10: case 12:days = 31;break;case 4: case 6: case 9: case 11:days = 30;break;case 2:days = 28; // 简化的二月天数break;default:days = -1; // 错误break;}printf("%d月有%d天\n", month, days);return 0;
}

3.2 default子句

  • 可选的,但建议总是包含
  • 处理所有未匹配的情况
  • 可以放在任意位置,但通常放在最后

3.3 嵌套switch语句

#include <stdio.h>int main() {int category = 1;int subcategory = 2;switch (category) {case 1:printf("主分类1: ");switch (subcategory) {case 1:printf("子分类1.1\n");break;case 2:printf("子分类1.2\n");break;default:printf("未知子分类\n");break;}break;case 2:printf("主分类2\n");break;default:printf("未知主分类\n");break;}return 0;
}

3.4 枚举类型与switch结合

#include <stdio.h>enum Color {RED, GREEN, BLUE};int main() {enum Color c = GREEN;switch (c) {case RED:printf("红色\n");break;case GREEN:printf("绿色\n");break;case BLUE:printf("蓝色\n");break;}return 0;
}

4. switch vs if-else 选择建议

使用switch的情况:

  • 基于单个整型表达式的多向分支
  • case值已知且离散
  • 需要高效的多路分支

使用if-else的情况:

  • 条件涉及范围比较(x > 10)
  • 条件基于多个变量
  • 条件不是整型表达式
http://www.dtcms.com/a/550239.html

相关文章:

  • 上海网站建设高端创业平台app有哪些
  • 从近10年历年论文题目看系统分析师考试出题趋势
  • IDS车载入侵检测系统
  • 人工智能重塑金融数字化:从精准服务到生态革新的全景探索
  • 合肥seo网站优化上海排名优化推广工具
  • WebRTC项目架构详解
  • 个人网站一定要备案吗手机医疗网站建设
  • 公司网站建设计入什么费用网站建设中图片是什么
  • 西安企业自助建站系统私人定制音乐app软件
  • 哪个网站能帮助做试卷贵州软件制作
  • 滨州市城乡建设部网站首页把excel做数据库分享成网站
  • Tailwind CSS 使用指南
  • Ubuntu18.04部署k8s
  • wordpress 格子主题长沙专业网站优化定制
  • 11. 深入Spring AI:格式化输出
  • seo网站推广可以自己搞吗电子商务平台建设实施方案
  • 网站建设 宜昌广州市白云区网站建设
  • TCP/IP 四层模型:网络协议的分工与协作
  • Huffman树的实现
  • 【Python办公】文件拆分工具开发实战(兼容Excelcsv)
  • 海南哪家公司做网站做的好网页游戏制作器
  • 网站后台数据库设计h5微信网站建设
  • 大厂Java面试现场揭秘:严肃面试官VS搞笑水货程序员谢飞机
  • 福州网站建设出格美容评测网站建设分析报告
  • [人工智能-大模型-119]:模型层 - 如何计算RNN的权重数量?
  • 提升网站收录建设厅注册中心网站考试报名费缴费
  • Rust 异步编程实践:用 Tokio 实现一个迷你 HTTP 服务
  • 怎么做网站调研一个网站页面设计多少钱
  • 网站文章发布建筑资料下载网
  • 网站建设初步规划书建站点