switch
语句在 C 语言中用于基于一个表达式的值来选择多个代码块中的一个来执行。它通常与 case
标签和 default
标签一起使用,其中 case
标签后面跟着一个常量表达式,当 switch
语句中的表达式与某个 case
标签的值匹配时,就会执行该 case
下的代码,直到遇到 break
语句或 switch
语句的末尾。
以下是 switch
语句的基本结构和用法:
c复制代码
switch (expression) { | |
case constant1: | |
// 当 expression 的值等于 constant1 时,执行这里的代码 | |
// ... | |
break; // 可选,但通常建议使用以防止代码继续执行到下一个 case | |
case constant2: | |
// 当 expression 的值等于 constant2 时,执行这里的代码 | |
// ... | |
break; | |
// 可以有更多的 case | |
default: | |
// 当 expression 的值不匹配任何 case 时,执行这里的代码 | |
// ... | |
break; // 可选,但在某些情况下可能有用 | |
} |
几点需要注意的事项:
- 表达式(expression):
switch
语句中的表达式必须是一个整数类型(如int
、char
、enum
等)或可以隐式转换为整数的类型(如short
)。 - case 标签:每个
case
后面都跟着一个常量表达式,该表达式在编译时必须是已知的。 - break 语句:在每个
case
块的末尾,通常会有一个break
语句,以确保当满足某个case
条件时,代码不会继续执行到下一个case
。如果没有break
,程序会“穿透”到下一个case
并继续执行,这被称为“case 穿透”。 - default 标签:
default
标签是可选的,它用于指定当expression
的值不匹配任何case
时应执行的代码。如果没有default
,并且expression
的值不匹配任何case
,则switch
语句不执行任何操作。
示例:
c复制代码
#include <stdio.h> | |
int main() { | |
int day = 3; | |
switch (day) { | |
case 1: | |
printf("Monday\n"); | |
break; | |
case 2: | |
printf("Tuesday\n"); | |
break; | |
case 3: | |
printf("Wednesday\n"); | |
break; | |
case 4: | |
printf("Thursday\n"); | |
break; | |
case 5: | |
printf("Friday\n"); | |
break; | |
case 6: | |
printf("Saturday\n"); | |
break; | |
case 7: | |
printf("Sunday\n"); | |
break; | |
default: | |
printf("Invalid day\n"); | |
break; | |
} | |
return 0; | |
} |
在这个示例中,程序会输出 "Wednesday",因为 day
的值为 3,与 case 3
匹配。