在C语言中,`switch`语句用于根据一个表达式的值来执行不同的代码块。`switch`语句的基本语法如下:
```c
switch (expression) {
case constant_expression1:
// 语句序列1
break;
case constant_expression2:
// 语句序列2
break;
// 可以有更多的case分支
default:
// 语句序列n
break;
}
```
语法说明
`expression`:一个整型、枚举类型或者是能隐式转换为整型的表达式。
`case constant_expression`:常量表达式,必须是在编译时可以确定其值的表达式,并且其类型必须与`switch`表达式的类型相匹配或者可以隐式转换为该类型。
`break`:用于跳出`switch`语句,如果没有`break`语句,程序会继续执行下一个`case`分支的语句,这种情况称为“贯穿”(fall-through)。
`default`:这是一个可选的部分,当`expression`的值与所有`case`分支中的`constant_expression`都不匹配时,执行`default`后面的代码块。
使用场景
`switch`语句特别适合处理以下情况:
当有多个固定值需要判断时,比如菜单选择、状态码等。
当需要提高代码可读性时,相比于多个`if-else`,`switch`更清晰。
示例
```c
include
int main() {
int day = 3; // 假设今天是星期三
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("无效的输入\n");
break;
}
return 0;
}
```
在这个示例中,程序会根据`day`变量的值输出对应的星期几。如果输入的值不是1到7之间的数字,程序会执行`default`分支,输出“无效的输入”。
注意事项
`case`后面的值必须是常量表达式,不能是变量或表达式。
每个`case`和`default`后面都必须有一个`break`语句,否则会继续执行下一个`case`或`default`的代码块。
如果没有`break`语句,程序会继续执行下一个`case`分支的语句,直到遇到`break`或`switch`语句结束。