switch的用法

本文详细介绍了switch语句的概念、使用场景及其格式,并解释了如何通过匹配数据值来选择执行特定的代码块。此外还讨论了switch语句的注意事项,包括支持的数据类型、break的作用以及穿透现象。

**switch **
概念:switch语句主要是对一些罗列出来的数据进行判断,然后根据判断的结果执行代码;

使用场景:当多个数据值选其一执行的时候,可以使用switch

switch格式:switch(数据值){
case 数据值1:
代码块1;
break;
case 数据值2:
代码块2;
break;

default:
代码块n+1;
[break;]
}
执行顺序:根据switch后小括号中的数据值与大括号中的case后的值做匹配,谁匹配成功,则执行对应的代码块;若都不匹配,则执行default里的代码块!
注意事项
1、switch后小括号中只能写 byte,short,int,char,String,枚举
2、每一个case下面的break可以不写,但是如果不写,会发生穿透现象
3、穿透:就是从匹配成功的case值处开始执行代码,一直向下执行,直到遇到break或大括号,switch语句才会结束;
4、default可以写在case的上面或中间或下面或省略,但是建议写在最后

### switch 语句的基本用法与语法 `switch` 语句是一种多分支选择结构,用于根据表达式的不同值执行不同的代码块。它在多个固定选项中进行判断时非常高效和清晰,常用于菜单选择、状态判断等场景。 #### 基本语法结构 ```c switch (expression) { case value1: // 执行语句块1 break; case value2: // 执行语句块2 break; ... default: // 默认执行语句块(可选) } ``` 其中: - `expression` 是一个返回整型或枚举类型的表达式。 - 每个 `case` 后面的 `value` 必须是常量,并且类型应与 `expression` 兼容。 - `break` 用于跳出当前分支,防止“穿透”到下一个 `case` 分支。 - `default` 是可选的,默认情况下如果没有任何 `case` 匹配,则会执行该分支。 #### Java 中的增强型 switch 语法 从 Java 12 开始,引入了更简洁的 `switch` 表达式写法,支持多值匹配和箭头语法: ```java String language = "Java"; switch (language) { case "Java", "java", "JAVA" -> System.out.println("分配到 Java 开发部门"); case "C#", "c#" -> System.out.println("分配到 C# 组"); default -> System.out.println("不支持的语言"); } ``` 这种写法省去了 `break` 语句,避免了传统 `switch` 的“穿透”问题[^5]。 #### Swift 中的改进语法 Swift 5.9 对 `switch` 语句也进行了简化,使其更加灵活和易读: ```swift let direction = "east" switch direction { case "north": print("向北走") case "south": print("向南走") case "east", "west": print("向东或向西走") default: print("未知方向") } ``` 此外,Swift 支持模式匹配、范围匹配等功能,使 `switch` 更加强大[^4]。 #### 使用注意事项 - **避免“穿透”现象**:如果不加 `break`,程序将继续执行下一个 `case` 的内容,这在某些情况下是有意为之的设计,但在多数时候应该避免。 - **default 分支建议保留**:即使没有默认处理逻辑,也可以用来记录日志或抛出异常,提高程序健壮性。 - **case 值必须唯一**:不能有两个相同的 `case` 常量值,否则会导致编译错误。 - **表达式类型限制**:在 C/C++ 和 Java 中,`switch` 不支持浮点数比较,只能用于整型、字符型、枚举型等。 #### 应用场景示例 以下是一个使用 `switch` 实现简单菜单选择功能的 C 语言示例: ```c #include <stdio.h> int main() { int choice; printf("请选择操作:\n1. 新建\n2. 打开\n3. 保存\n4. 退出\n"); scanf("%d", &choice); switch(choice) { case 1: printf("新建文件\n"); break; case 2: printf("打开文件\n"); break; case 3: printf("保存文件\n"); break; case 4: printf("退出程序\n"); break; default: printf("无效的选择\n"); } return 0; } ``` 此代码通过 `switch` 判断用户输入的数字并执行相应操作,提高了代码的可读性和结构清晰度[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值