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。掌握这两种语句的使用场景和技巧,能够帮助你编写更加高效和清晰的代码。
热门推荐
床应该怎样摆放才是正确朝向
摇篮曲:助宝宝一夜好梦的神奇力量
摇篮曲助早产儿康复,科学育儿新趋势
800米跑:速度与耐力的完美结合,如何科学训练?
春季甘蓝栽培技术要点
甘蓝种植全攻略:从选种到收获的14个关键步骤
企业战略规划:如何平衡短期与长期目标?
团队如何设定愿景和使命
最新研究:兄弟姐妹数量影响青少年心理健康
父母离世后,如何维系兄弟姐妹间的亲情?
吴川机场周边超赞休闲打卡地推荐!
西安周边游|西寺沟:秦岭深处的秘境,周末自驾游的完美选择
如何为您的家庭选择最合适的用车
十八岁无房也能独立户口?攻略来了!
农村户口无房也能分户?这些步骤你必须知道!
800米、1000米跑成绩不合格?优化跑步姿势,提高心肺能力是关键!
突然血尿怎麼辦?會自己好嗎?血尿5大原因小心是癌症!
特种兵作战服的设计艺术揭秘
从解放军军服变迁看中国军队文化发展
西安博物院景点详解:历史、艺术与文化的交汇点
【艺术的觉醒】兵马俑:雕塑艺术与历史教育的完美融合
从司法到民生:汉文帝刘恒的全方位改革举措
助眠音乐 vs 白噪音:谁是宝宝安睡神器?
卫生间防水施工步骤及装修原则
微信收款码怎么暂停?简单几步搞定!
柴油机VS汽油机:谁更胜一筹?
柴油机VS汽油机:价格大揭秘
双十一购车指南:柴油车vs汽油车,如何做出明智选择?
让家乡不再是一个被遗忘的角落,而是一个充满活力和希望的地方
新手创业做什么好?12个小本创业项目推荐