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。掌握这两种语句的使用场景和技巧,能够帮助你编写更加高效和清晰的代码。
热门推荐
从紫禁城到CBD:北京三大地标摄影指南
故宫:世界最大木质古建筑群里的中国智慧
信阳婚礼冲突:彩礼纠纷暴露原生家庭对女性伤害
民政部婚俗改革试验区见成效:盐池县兴起“零彩礼”新风
全国率先!北京完成林地保护规划,2035年森林覆盖率将达45%
隆美尔的88炮传奇:法国战役中的坦克克星
高性能芳纶涂覆隔膜需求旺,中国企业突破关键技术
饮食调整助力甲状腺健康:从食材到注意事项全攻略
火龙果创意料理大赛,谁是最强厨艺王?
黄肉火龙果:营养超群的热带水果之王
火龙果真的能护心?听听专家怎么说
桨声灯影里的秦淮河:南京夫子庙夜游攻略
范仲淹兴化创夫子庙,开创官办教育先河
雍正、果郡王、苏培盛:甄嬛传中关键男性的三种命运
冬日故宫探秘:历史与美景的交融
北京冬季旅游必备装备大揭秘!
北京冬季打卡圣地:什刹海滑冰、香山踏雪、故宫雪景
百望山冬季摄影攻略:捕捉最美瞬间
十七部委发文推动“以体强心”,体育活动成心理健康新助力
掌握正确姿势,远离运动损伤:三大基础健身动作指南
慈安太后:权力斗争中的清醒者,同治中兴的幕后功臣
《甄嬛传》再登热搜:一部剧的14年与人性解读的无限可能
延禧服饰胜,甄嬛剧情强:宫斗剧历史还原度大比拼
惠州回南天来袭,防潮攻略速看!
台风为什么会拐弯
科技赋能+文旅融合,南京夫子庙保护开发实现双赢
南京夫子庙六大景点:从大成殿到江南贡院,千年文脉传承地
冬日亲子游,打卡北京周边最美雪景地
坝上草原:北京周边最美自然景观打卡地
黄松峪村:古韵长城下的网红打卡地