default 是 C 语言中的一个关键字,它本身不能单独使用,而是和 switch 语句紧密配合,形成一个完整的逻辑结构。

default 的意思是 “默认情况” 或 “其他所有情况”。
default 的核心作用
default 用在 switch 语句中,用来处理当 switch 的表达式(expression)的值不匹配任何一个 case 标签时,程序应该执行的代码块。
你可以把它想象成一个“兜底”或“收尾”的选项,确保无论 switch 的值是什么,程序都有地方可去,避免出现意料之外的行为。
default 在 switch 语句中的语法结构
default 通常放在 switch 语句的末尾,但也可以放在任何位置(不过放在末尾最符合逻辑和可读性)。

switch (expression) {
case constant_expression_1:
// 当 expression 的值等于 constant_expression_1 时,执行这里的代码
break;
case constant_expression_2:
// 当 expression 的值等于 constant_expression_2 时,执行这里的代码
break;
// ... 可以有更多的 case
default:
// 当 expression 的值不匹配任何一个 case 时,执行这里的代码
break;
}
一个简单的例子
假设我们要根据一个学生的分数等级,给出不同的评价。
#include <stdio.h>
int main() {
char grade = 'C';
switch (grade) {
case 'A':
printf("优秀!\n");
break;
case 'B':
printf("良好!\n");
break;
case 'C':
printf("及格!\n");
break;
default:
printf("成绩无效或需要努力!\n");
break;
}
return 0;
}
代码分析:
grade的值是'C'。switch开始匹配。case 'A'?不匹配。case 'B'?不匹配。case 'C'?匹配!于是执行printf("及格!\n");,然后遇到break;,跳出整个switch语句。- 程序输出:
及格!
我们修改一下 grade 的值:
char grade = 'F';
执行流程:

grade的值是'F'。switch开始匹配。case 'A'?不匹配。case 'B'?不匹配。case 'C'?不匹配。- 所有的
case都没有匹配上,这时程序就会执行default分支。 - 执行
printf("成绩无效或需要努力!\n");。 - 程序输出:
成绩无效或需要努力!
default 的关键特性和注意事项
-
default是可选的switch语句可以没有default分支,如果没有任何case匹配且没有default,switch语句体中的代码将不会被执行,程序会继续执行switch语句后面的代码。 -
default不需要break(但最好加上)default后面并不强制要求写break;,因为default是switch的最后一个分支(通常情况下),执行完它之后自然就会退出switch语句。- 最佳实践:即使
default在末尾,也强烈建议加上break;,这可以防止未来在default后面添加新的case时,忘记添加break;而导致的“贯穿”(fall-through)错误,这是一种常见的逻辑错误。
- 最佳实践:即使
-
default的位置 虽然习惯上把default放在最后,但它可以放在switch语句的任何位置,程序逻辑仍然是:只有当所有case都不匹配时,才会执行default的代码,而不管它写在哪个位置,为了代码清晰易读,请务必将它放在最后。
default 的实际应用场景
除了上面简单的例子,default 在处理用户输入、状态机、错误处理等方面非常有用。
场景示例:一个简单的菜单程序
#include <stdio.h>
int main() {
int choice;
printf("请选择一个选项 (1-3): ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("你选择了选项 1,\n");
break;
case 2:
printf("你选择了选项 2,\n");
break;
case 3:
printf("你选择了选项 3,\n");
break;
default:
printf("无效的输入!请输入 1, 2 或 3,\n");
break;
}
return 0;
}
如果用户输入 2,程序会打印 你选择了选项 2。。
如果用户输入 5,程序会打印 无效的输入!请输入 1, 2 或 3。,这就是 default 的功劳。
| 特性 | 描述 |
|---|---|
| 核心含义 | “默认情况”或“其他所有情况” |
| 使用场景 | 必须在 switch 语句内部使用 |
| 主要作用 | 当 switch 表达式的值与所有 case 都不匹配时,执行 default 后的代码块 |
break 语句 |
default 后面通常有 break;,虽然不是语法强制要求,但强烈建议加上,以避免逻辑错误和提高代码可维护性。 |
| 位置 | 可以放在 switch 语句的任何位置,但为了清晰,通常放在最后。 |
| 可选性 | default 分支是可选的,switch 语句可以没有它。 |
