程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!
1.switch语句
C语言的条件语句除了上一篇写的if语句还有switch语句。
在 C 语言中,switch 语句是一种强大的控制流结构,它为我们提供了一种简洁而有效的方式,根据表达式的值在多个代码分支中进行选择。
为什么有了if语句还需要掌握switch语句呢?
- 当有多个基于同一变量的不同值进行选择时,switch 语句可以使代码更加清晰易读。
- 在某些编译器和特定条件下,switch 语句可能比多个 else if 语句的性能更好。
- 对于有多个 else if 语句的情况,使用 switch 语句可以减少代码的冗余
- switch 语句为多分支的选择提供了一种结构化的方式,使代码的逻辑结构更加清晰,易于理解和修改
2.switch语法格式
switch (expression) {
case value1:
// 代码块 1
break;
case value2:
// 代码块 2
break;
// 可以有多个 case 语句
default:
// 代码块 n
break;
}
expression:这是一个表达式,其结果将与每个 case 后面的 value 进行比较。这个表达式通常是整数类型(包括字符型,因为字符在 C 语言中本质上是整数)或枚举类型。
case valueN:这是一个分支标签,当 expression 的结果等于 valueN 时,程序将从该标签处开始执行代码。
break:当程序执行到 break 语句时,它将跳出 switch 语句,继续执行 switch 语句后面的代码。如果没有 break,程序将继续执行下一个 case 语句的代码,这被称为 "fall-through" 特性。
default:这是一个可选的部分,当 expression 的值与所有 case 的 value 都不匹配时,将执行 default 部分的代码。
3.switch运行流程
首先,计算 switch 语句中的 expression 的值。
然后,将 expression 的值与每个 case 后面的 value 进行比较。
一旦找到匹配的 case,程序将从该 case 开始执行代码。
如果没有 break 语句,程序将继续执行后续的 case 语句,直到遇到 break 或 switch 语句结束。
如果没有找到匹配的 case 且存在 default 部分,将执行 default 部分的代码;
如果没有 default 部分,程序将直接跳出 switch 语句。
4.示例
我们写2个,一个用来判断输入月份多少天的,另一个用来把数字转换为对应的星期的。
//switch语句 月份多少天
void f5(){
int month;
printf("请输入月份(1-12):");
scanf("%d", &month);
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("该月有31天\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("该月有30天\n");
break;
case 2:
printf("该月有28天或29天\n");
break;
default:
printf("输入错误,请输入 1-12 之间的数字\n");
}
}
//switch语句 数字-转换为 星期
void f6(){
int day;
printf("请输入一个数字 (1-7) 表示星期几: ");
scanf("%d", &day);
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("输入错误,请输入 1-7 之间的数字\n");
break;
}
}
5.fall-through
switch 语句中的 "fall-through" 特性
"fall-through" 是 switch 语句的一个特性,当 case 语句中没有 break 时,程序将继续执行下一个 case 的代码。
6.注意事项
(一)break 语句的重要性
忘记添加 break 语句可能导致意外的程序行为。在大多数情况下,你需要在每个 case 的代码块末尾添加 break 语句,以确保程序执行完当前 case 后跳出 switch 语句。
(二)default 语句的使用
default 语句是可选的,但使用它可以提供一个默认的处理逻辑,当没有 case 匹配时执行。
default 语句可以放在 switch 语句的任何位置,但通常将其放在最后,以符合代码的阅读习惯。
(三)case 标签的唯一性
每个 case 的 value 必须是唯一的,不能重复。
(四)case 语句的顺序
一般情况下,case 语句的顺序不会影响程序的正确性,但对于有重叠范围的 case 值,顺序会影响执行结果。
7.使用建议
1、为养成好习惯,最好在每一条的 case 语句中的后面都加上一个 break
2、多个 case 语句可以共用一条(或者多条)执行语句
3、case 和 default 没有强制的位置关系,就是说 default 不一定要放在
最后,放在哪里都可以
好啦,关于C语言的条件语句,我们就搞完了,恭喜你,在嵌入式开发的路上又前进了一大步!