C语言switch case语句的用法(非常详细)

C语言switch case语句的用法(非常详细)

在 C语言中,switch case 语句是一种多分支选择结构,用于根据表达式的值执行不同的代码块。

相比于嵌套的 if else,switch case 语法更简洁,可读性更强,尤其在需要匹配多个固定值时。换句话说,switch case语句是 if else 的替代方案,特别适合处理多个离散值的条件判断。

本教程将详细讲解 switch case 的语法、工作原理、使用场景以及注意事项。

switch case的基本用法

switch case 的基本语法结构如下:

switch (表达式) {

case 常量值1:

// 当表达式等于常量值1 时执行

break;

case 常量值2:

// 当表达式等于常量值2 时执行

break;

default:

// 当没有匹配的 case 时执行

}

表达式:必须是整数类型(包括 char),不能是浮点数或字符串。

常量值:必须是编译时已知的整数常量或字符常量,不能是变量。

break:可选,但通常必要,用于跳出 switch。

switch case 语句通过一个表达式的值与多个 case 标签进行匹配,找到匹配的分支后执行相应代码。如果没有匹配项,则执行默认分支(default)。

switch 语句的工作流程如下:

计算 switch 后的表达式值。

从上到下查找匹配的 case 标签。

找到匹配后,执行该 case 后的代码,直到遇到 break 或 switch 块结束。

若无匹配且有 default,执行 default 块;否则,直接退出。

switch case 语句的核心思想是“根据值选择路径”,常用于菜单选择、状态机等场景。

【实例】简单选择。

#include

int main(void) {

int day = 3;

switch (day) {

case 1:

printf("星期一\n");

break;

case 2:

printf("星期二\n");

break;

case 3:

printf("星期三\n");

break;

default:

printf("无效的日期\n");

}

return 0;

}

输出结果:

星期三

day 的值 3monitor 匹配 case 3,执行对应代码后,break 退出 switch。

注意,没有 break 时,switch case 语句会发生“贯穿”(fall-through),即继续执行后续 case 的代码。

【实例】贯穿现象。

#include

int main(void) {

int num = 2;

switch (num) {

case 1:

printf("一 ");

case 2:

printf("二 ");

case 3:

printf("三\n");

break;

default:

printf("其他\n");

}

return 0;

}

输出结果:

二 三

num 匹配 case 2,但无 break,继续执行 case 3,直到 break 退出。

switch case的实际应用

1) 字符匹配

switch 支持 char 类型,常用于处理字符输入。

#include

int main(void) {

char grade = 'B';

switch (grade) {

case 'A':

printf("优秀\n");

break;

case 'B':

printf("良好\n");

break;

case 'C':

printf("及格\n");

break;

default:

printf("未知等级\n");

}

return 0;

}

输出结果:

良好

2) 多值共享代码

多个 case 可以共享同一段代码,通过连续写出 case 并省略中间的 break。

#include

int main(void) {

int month = 4;

switch (month) {

case 3:

case 4:

case 5:

printf("春季\n");

break;

case 6:

case 7:

case 8:

printf("夏季\n");

break;

default:

printf("其他季节\n");

}

return 0;

}

输出结果:

春季

month 为 4,匹配 case 4,执行下方代码直到 break。

3) 嵌套switch

switch 可以嵌套,用于更复杂的多级判断。

#include

int main(void) {

int type = 1, level = 2;

switch (type) {

case 1:

switch (level) {

case 1:

printf("初级战士\n");

break;

case 2:

printf("中级战士\n");

break;

}

break;

case 2:

printf("法师\n");

break;

default:

printf("未知类型\n");

}

return 0;

}

输出结果:

中级战士

switch case和if else的对比

特性

switch case

if else

适用条件

离散整数值

任意表达式

可读性

多值匹配时更清晰

复杂条件时更灵活

执行效率

可能优化为跳转表

逐一检查条件

switch case注意事项

1) break的重要性

忘记 break 会导致意外的贯穿,需根据需求决定是否省略。

2) 表达式类型限制

switch 表达式必须是整数类型,不能使用浮点数或字符串。

// 错误示例

float f = 1.0;

switch (f) { ... } // 编译错误

3) case常量要求

case 后的值必须是常量,不能是变量或表达式。

// 错误示例

int x = 1;

switch (num) {

case x: // 编译错误

}

4) default的作用

建议总是添加 default,处理意外输入,提高程序健壮性。

总结

C语言的switch case语句是一种高效的多分支选择工具,在一些场景中,它能代替 if else 分支语句,实现清晰且高效的代码逻辑。

读完本文,相信你已经掌握switch case语句的用法,并搞清楚了它和if else语句各自的适用场景。

相关推荐

苹果设置id等多久 苹果设置id需要多长时间
餘的意思
365bet中文版

餘的意思

📅 07-19 👁️ 3388
显卡已经开始冒烟了!盘点8款配置要求极高的PC游戏
轩辕传奇翅膀配饰上线 橙色品质烈焰羽翼效果欣赏
为什么经常发烧
365bet中文版

为什么经常发烧

📅 07-27 👁️ 655
篮球类游戏
揭秘:韩国年轻人热爱的十大社交软件,解锁跨国交流新潮流
js如何点击按钮
迪拜:全球最“壕”华的城市,究竟有多少个世界之最?