C语言switch case语句用法详解(通俗易懂,适合新手小白)

系统学C语言和数据结构

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

相比于if else语句,switch case在处理多个固定值的条件判断时更加简洁和高效。本文将详细讲解switch case语句的用法、语法格式、实例代码、注意事项,以及与if else语句的区别。

switch case语句的基本用法

switch case语句通过匹配一个变量的值,选择执行对应的代码块。它的核心思想是“值匹配”,即根据变量的值跳转到相应的case分支。

语法格式:

 1 switch (表达式) {
 2     case 常量1:
 3         // 当表达式的值等于常量1时执行的代码
 4         break;
 5     case 常量2:
 6         // 当表达式的值等于常量2时执行的代码
 7         break;
 8     ...
 9     default:
10         // 当表达式的值不匹配任何case时执行的代码
11 }

代码执行流程:

  1. 计算switch后面表达式的值。

  2. 将表达式的值与每个case后的常量进行比较。

  3. 如果找到匹配的case,则执行对应的代码块,直到遇到break语句或switch语句结束。

  4. 如果没有匹配的case,则执行default块中的代码(如果有)。

以下是一个简单的switch case示例,根据用户输入的数字输出对应的星期几:

 1 #include <stdio.h>
 2 
 3 int main() {
 4     int day;
 5 
 6     printf("请输入一个数字(1-7):");
 7     scanf("%d", &day);
 8 
 9     switch (day) {
10         case 1:
11             printf("星期一\n");
12             break;
13         case 2:
14             printf("星期二\n");
15             break;
16         case 3:
17             printf("星期三\n");
18             break;
19         case 4:
20             printf("星期四\n");
21             break;
22         case 5:
23             printf("星期五\n");
24             break;
25         case 6:
26             printf("星期六\n");
27             break;
28         case 7:
29             printf("星期日\n");
30             break;
31         default:
32             printf("输入错误,请输入1-7之间的数字!\n");
33     }
34 
35     return 0;
36 }

代码解释:

  • day是用户输入的数字,switch会根据day的值跳转到对应的case分支。

  • 如果day的值为1,输出"星期一",然后遇到break语句,跳出switch

  • 如果day的值不在1-7之间,执行default块中的代码,提示输入错误。

switch case 语句的注意事项

1) break语句的作用

  • break语句用于结束当前case的执行,跳出switch语句。

  • 如果没有break,程序会继续执行后续的case代码块,直到遇到breakswitch结束。这种现象称为“case穿透”。

示例:
 1 #include <stdio.h>
 2 
 3 int main() {
 4     int num = 2;
 5 
 6     switch (num) {
 7         case 1:
 8             printf("执行case 1\n");
 9         case 2:
10             printf("执行case 2\n");  // 因为没有break,继续执行下一个case
11         case 3:
12             printf("执行case 3\n");
13         default:
14             printf("执行default\n");
15     }
16 
17     return 0;
18 }

输出:

执行case 2
执行case 3
执行default

2) default块的作用

  • default块是可选的,用于处理所有case都不匹配的情况。

  • 如果没有default,且所有case都不匹配,则switch语句不执行任何代码。

3) case后的常量必须是整型或字符型

  • switch的表达式和case后的常量必须是整型(如int)或字符型(如char),不能是浮点型或字符串。

4) case常量不能重复

  • 每个case后的常量值必须唯一,不能有重复。

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:需要依次判断每个条件,效率较低。

示例对比:

 1 // 使用 if else
 2 if (day == 1) {
 3     printf("星期一\n");
 4 } else if (day == 2) {
 5     printf("星期二\n");
 6 } else if (day == 3) {
 7     printf("星期三\n");
 8 } else {
 9     printf("输入错误\n");
10 }
11 
12 // 使用 switch case
13 switch (day) {
14     case 1:
15         printf("星期一\n");
16         break;
17     case 2:
18         printf("星期二\n");
19         break;
20     case 3:
21         printf("星期三\n");
22         break;
23     default:
24         printf("输入错误\n");
25 }

总结

  • switch case语句是一种高效的多分支选择结构,适用于对固定值的条件判断。

  • break语句用于防止“case穿透”,确保只执行匹配的case代码块。

  • default用于处理未匹配的情况,是可选的。

  • if else的区别switch case适合处理固定值的多分支选择,而if else适合处理范围或复杂条件。

在实际编程中,应根据具体需求选择合适的条件控制语句。如果条件判断是基于固定值的,优先使用switch case;如果条件判断涉及范围或复杂逻辑,则使用if else。掌握这两种语句的使用场景和技巧,能够帮助你编写更加高效和清晰的代码。

最后,给大家推荐一个 1.7W 字的【C语言学习小册】,直接免费下载领取,能带你踹开编程的大门,让你对 C 语言本身,以及 C 语言的周边都有一个整体上的认知,阅读完后,能帮你解开很多疑问,比如:

  • C语言到底是什么玩意?
  • C语言到底能干什么?
  • 学编程难吗?多久能学会?
  • C语言和C++到底有什么关系?
  • 2025年了,程序员有必要学习C语言吗?
  • 为什么很多人学了 C 语言感觉它屁用没有?
  • 学习C语言,为什么一定要学习内存?
  • 主流的C语言编译器有哪些,它们各自有什么优缺点?

系统学习 C 语言,请猛击《C语言入门教程(非常详细,尤其适合新手小白)》。

posted @ 2025-11-12 21:24  菜又爱玩  阅读(0)  评论(0)    收藏  举报