当前位置: 首页> 房产> 政策 > 广西桂林房价_网站的设计与维护摘要_谷歌广告怎么投放_百度竞价推广专员

广西桂林房价_网站的设计与维护摘要_谷歌广告怎么投放_百度竞价推广专员

时间:2025/7/12 10:38:14来源:https://blog.csdn.net/qq_51189513/article/details/145892430 浏览次数:0次
广西桂林房价_网站的设计与维护摘要_谷歌广告怎么投放_百度竞价推广专员

C语言 switch 语句的详细解析:用法、注意事项与易错点

switch 语句是 C 语言中的一种多分支选择结构,用于根据某个变量的值选择执行不同的代码块。它使得程序在处理多个条件时,比一系列的 if-else 语句更加简洁和高效。了解 switch 语句的使用方法及其注意事项对于编写清晰、可维护的代码非常重要。

1. switch 语句的基本语法

基本语法结构

switch (expression) {case constant_1:// 执行语句 1;break;case constant_2:// 执行语句 2;break;case constant_3:// 执行语句 3;break;// ...default:// 执行默认语句;
}

解释:

  • expression:一个表达式,通常是一个变量或常量。switch 会根据 expression 的值去匹配相应的 case
  • case constant_X:每个 case 后面跟着一个常量值,如果 expression 的值与某个常量值匹配,则执行该 case 下的代码块。
  • break:跳出 switch 语句。如果不写 break,程序会继续执行下一个 case 语句,直到遇到 breakswitch 语句结束。
  • default:可选项,当所有 case 都不匹配时,执行 default 后的语句。default 语句通常放在 switch 的最后。

示例代码:基础 switch 使用

#include <stdio.h>int main() {int day = 3;switch (day) {case 1:printf("Sunday\n");break;case 2:printf("Monday\n");break;case 3:printf("Tuesday\n");break;case 4:printf("Wednesday\n");break;case 5:printf("Thursday\n");break;case 6:printf("Friday\n");break;case 7:printf("Saturday\n");break;default:printf("Invalid day\n");}return 0;
}

输出:

Tuesday

2. switch 语句的工作流程

switch 语句的工作流程是:

  1. switch 会计算表达式的值(通常是一个整数、字符或枚举类型)。
  2. 将该值与每个 case 后的常量进行匹配。
  3. 一旦找到匹配的 case,执行对应的语句直到遇到 break
  4. 如果没有找到匹配的 case,则执行 default 语句(如果有)。

示例代码:没有 break 的情况

#include <stdio.h>int main() {int day = 3;switch (day) {case 1:printf("Sunday\n");case 2:printf("Monday\n");case 3:printf("Tuesday\n");case 4:printf("Wednesday\n");default:printf("Invalid day\n");}return 0;
}

输出:

Tuesday
Wednesday
Invalid day

解释:

在没有 break 的情况下,程序会执行匹配到的 case 后面的所有语句,直到 switch 结束。这种现象叫做“fall-through”,即“贯穿”。

3. 使用 break 跳出 switch 语句

break 用来跳出 switch 语句,防止程序继续执行后面的 case 语句。

示例代码:正确使用 break

#include <stdio.h>int main() {int day = 3;switch (day) {case 1:printf("Sunday\n");break;case 2:printf("Monday\n");break;case 3:printf("Tuesday\n");break;case 4:printf("Wednesday\n");break;default:printf("Invalid day\n");}return 0;
}

输出:

Tuesday

4. switch 支持的类型

在 C 语言中,switch 语句的 expression 可以是以下类型:

  • 整型(intshortlong
  • 字符型(char
  • 枚举类型(enum

注意:浮点型(floatdouble)和字符串类型(char[])不能直接作为 switch 的表达式。

示例代码:使用字符型表达式

#include <stdio.h>int main() {char grade = 'B';switch (grade) {case 'A':printf("Excellent\n");break;case 'B':printf("Good\n");break;case 'C':printf("Average\n");break;case 'D':printf("Poor\n");break;default:printf("Invalid grade\n");}return 0;
}

输出:

Good

5. switchenum 类型

switch 和枚举类型(enum)结合使用时,能够提高代码的可读性和可维护性。

示例代码:switchenum 的结合

#include <stdio.h>enum Weekdays { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };int main() {enum Weekdays today = Tuesday;switch (today) {case Sunday:printf("Sunday\n");break;case Monday:printf("Monday\n");break;case Tuesday:printf("Tuesday\n");break;default:printf("Weekday unknown\n");}return 0;
}

输出:

Tuesday

6. 注意事项与易错点

1. 忘记写 break,导致 fall-through 错误

如果在每个 case 后忘记加 break,会导致程序继续执行下一个 case 的语句。这种行为是有意设计的,但在大多数情况下,我们需要显式地添加 break 来避免这种情况。

解决方法: 确保每个 case 语句后都有 break

2. switch 中不能使用浮点类型

switch 语句要求 expression 的类型是整数类型或者字符类型,因此不能使用浮点数或字符串。

错误示范:

float num = 3.14;
switch (num) { // 错误!不支持浮点类型case 3.14:printf("Pi\n");break;default:printf("Unknown\n");
}

解决方法: 使用整数值代替浮点值,或者改用 if-else 语句。

3. case 常量必须是常量表达式

switchcase 后面的值必须是常量。如果使用变量或计算结果,编译器会报错。

错误示范:

int x = 5;
switch (x) {case x:  // 错误!`case` 后面必须是常量printf("x is 5\n");break;default:printf("Unknown\n");
}

解决方法: 确保 case 后面的值是常量。

4. default 语句的可选性

default 语句是可选的。如果没有匹配的 case,并且没有 default,程序将跳过 switch 语句。

示例:

int day = 8;
switch (day) {case 1:printf("Sunday\n");break;case 2:printf("Monday\n");break;default:// 可选,若省略则没有输出printf("Invalid day\n");
}

解决方法: 根据需要选择是否使用 default

7. 总结

switch 语句在 C 语言中是一种高效且简洁的多分支选择结构,适用于当一个表达式的值与多个常量值进行比较时。它提供了比多个 if-else 语句更清晰的结构,尤其是在处理大量条件时。

常见的注意事项:

  • 忘记 break 会导致 fall-through
  • 不支持浮点类型,只支持整型和字符型。
  • case 后必须是常量,不能是变量或表达式。
  • default 是可选的,可以用来处理未匹配的情况。

掌握 switch 语句的使用,可以使你的代码更加简洁、高效,同时避免复杂的多层 if-else 语句,提升代码的可读性和可维护性。

关键字:广西桂林房价_网站的设计与维护摘要_谷歌广告怎么投放_百度竞价推广专员

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: