C语言switch case语句详解(非常详细)
创作时间:
作者:
@小白创作中心
C语言switch case语句详解(非常详细)
引用
CSDN
1.
https://m.blog.csdn.net/zdoeo/article/details/145481018
在C语言中,switch case语句是一种多分支选择结构,用于根据变量的值执行不同的代码块。相比于if else语句,switch case在处理多个固定值的条件判断时更加简洁和高效。本文将详细讲解switch case语句的用法、语法格式、实例代码、注意事项,以及与if else语句的区别。
1. switch case 语句的基本用法
switch case语句通过匹配一个变量的值,选择执行对应的代码块。它的核心思想是“值匹配”,即根据变量的值跳转到相应的case分支。
语法格式:
switch (表达式) {
case 常量1:
// 当表达式的值等于常量1时执行的代码
break;
case 常量2:
// 当表达式的值等于常量2时执行的代码
break;
...
default:
// 当表达式的值不匹配任何case时执行的代码
}
代码执行流程:
- 计算switch后面表达式的值。
- 将表达式的值与每个case后的常量进行比较。
- 如果找到匹配的case,则执行对应的代码块,直到遇到break语句或switch语句结束。
- 如果没有匹配的case,则执行default块中的代码(如果有)。
2. 实例代码
以下是一个简单的switch case示例,根据用户输入的数字输出对应的星期几:
#include <stdio.h>
int main() {
int day;
printf("请输入一个数字(1-7):");
scanf("%d", &day);
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("输入错误,请输入1-7之间的数字!\n");
}
return 0;
}
代码解释:
- day是用户输入的数字,switch会根据day的值跳转到对应的case分支。
- 如果day的值为1,输出"星期一",然后遇到break语句,跳出switch。
- 如果day的值不在1-7之间,执行default块中的代码,提示输入错误。
3. switch case 语句的注意事项
(1)break语句的作用
- break语句用于结束当前case的执行,跳出switch语句。
- 如果没有break,程序会继续执行后续的case代码块,直到遇到break或switch结束。这种现象称为“case穿透”。
示例:
#include <stdio.h>
int main() {
int num = 2;
switch (num) {
case 1:
printf("执行case 1\n");
case 2:
printf("执行case 2\n"); // 因为没有break,继续执行下一个case
case 3:
printf("执行case 3\n");
default:
printf("执行default\n");
}
return 0;
}
输出:
执行case 2
执行case 3
执行default
(2)default块的作用
- default块是可选的,用于处理所有case都不匹配的情况。
- 如果没有default,且所有case都不匹配,则switch语句不执行任何代码。
(3)case后的常量必须是整型或字符型
- switch的表达式和case后的常量必须是整型(如int)或字符型(如char),不能是浮点型或字符串。
(4)case常量不能重复
- 每个case后的常量值必须唯一,不能有重复。
4. switch case 与if else的区别
(1)适用场景
- switch case:适用于对固定值的条件判断,尤其是当变量的值有多个明确的选项时(如菜单选择、状态码等)。
- if else:适用于对范围或复杂条件的判断(如x > 10 && y < 20)。
(2)代码结构
- switch case:结构清晰,适合多分支选择。
- if else:结构灵活,适合处理复杂的逻辑。
(3)性能
- switch case:在某些编译器中,switch case会被优化为跳转表,执行效率较高。
- if else:需要依次判断每个条件,效率较低。
示例对比:
// 使用 if else
if (day == 1) {
printf("星期一\n");
} else if (day == 2) {
printf("星期二\n");
} else if (day == 3) {
printf("星期三\n");
} else {
printf("输入错误\n");
}
// 使用 switch case
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
default:
printf("输入错误\n");
}
5. 总结
- switch case语句是一种高效的多分支选择结构,适用于对固定值的条件判断。
- break语句用于防止“case穿透”,确保只执行匹配的case代码块。
- default块用于处理未匹配的情况,是可选的。
- 与if else的区别:
- switch case适合处理固定值的多分支选择,而if else适合处理范围或复杂条件。
在实际编程中,应根据具体需求选择合适的条件控制语句。如果条件判断是基于固定值的,优先使用switch case;如果条件判断涉及范围或复杂逻辑,则使用if else。掌握这两种语句的使用场景和技巧,能够帮助你编写更加高效和清晰的代码。
热门推荐
行驶10万公里,新能源车与燃油车的经济对比,结果意外
光刻技术突破:揭秘如何将上百亿晶体管融入3nm芯片
从上海浦东机场到上海虹桥机场,怎么样走最快
手机信号差的多种原因及解决方法详解,助你畅享通讯体验
期货一手鸡蛋的盈利潜力如何分析?这种分析对投资决策有何帮助?
ECharts入门教程(基础详细)
如何减少口吃的发生
快走运动—比跑步轻松,比走路高效,血糖、血脂都受益,还对膝盖友好
慢跑半小时 vs 快走一小时,究竟哪个更减肥?
判决书生效怎么算
啤酒解酒方法:原理、注意事项及最快最有效的方式
异构算力的调度策略解析与实现
AI本地部署是什么意思?AI本地部署的用途和好处
孩子口吃,表达能力差怎么办?
招聘软件有哪些功能可以提升招聘效率?
什么是势能以及如何计算的?
信用风险与利率变动对企业成本的影响分析
张雪峰评价中国地质大学:地质领域王牌学府的独特魅力!
实体瘤疫苗迎来新突破:哈佛大学团队的个性化肿瘤疫苗为晚期肾癌治疗点燃希望
《短歌行》鉴赏及艺术特色
持续幸福!探索七项【婚姻长跑】的成功秘诀
朗致枳术宽中胶囊——全球首个纳入国际权威通识指南的中成药
教师调配教育资源方案怎么设计
人形机器人加速进入日常生活
煲汤食材搭配与烹饪细节解析
三种实用燃脂训练方案:5分钟到15分钟,随时随地高效减脂
专家支招大学生求职:明确目标、提升自我,积极走好就业路
什么是网红营销?个人站长如何做好网红营销?
聚焦“高水平科技自立自强”,核领域代表、委员建言献策
黑豆和什么煲汤好