switch分支语句合并相同功能的case语句

您所在的位置:网站首页 c语言,case switch分支语句合并相同功能的case语句

switch分支语句合并相同功能的case语句

2023-09-21 11:33| 来源: 网络整理| 查看: 265

Write By Monkeyfly

以下内容均为原创,如需转载请注明出处。

前提

描述:

switch 语句用于:根据一个变量的不同取值,来执行不同的代码。

语法:

switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: 如果以上条件都不满足,则执行该代码; }

如果多个 case 语句都执行相同的功能代码时,应该怎么处理呢?【可以做如下理解】

如何给 case 语句传多个值?switch 分支结构中一个 case 语句可以跟多个值吗?switch 语句中 相同的 case 能合并么? 实现

我的写法如下:【错误写法】

switch(month){ case 1 || 3 || 5 || 7 || 8|| 10 ||12: console.log(month+"月有31天"); break; case 4 || 6 ||9 ||11: console.log(month+"月有30天"); break; default: console.log(month+"月有28天"); }

于是我就习惯性的使用了 JavaScript 中的逻辑运算符 || (或) 来实现的。

注:逻辑运算符用于测定变量或值之间的逻辑。

发现问题

刚开始写的时候没注意这个写法有没有问题,因为自己也是第一次这么写。

今天在测试功能时,经过调试才发现了该问题:当变量的值符合 这个 case 语句中的表达式判断时,它并没有执行该 case 语句,而是直接执行了 default 语句。

当错误发生的时候,我才意识到:有可能是当初 case 语句 的表达式判断写的有问题。如果多个变量的取值都对应同一种处理情况时,我选择了使用 逻辑运算符 || (或)来实现。写的时候也不知道对错,凭印象写的。

解决问题 经过百度搜索一番才发现,并不是这么干的。原来是语法写错了,根本就没有我那样的写法。从搜索结果来看,有不少小伙伴都有过我这种类似的写法,看来这个现象还是会经常发生的,一不留神就写错了。究其根本,还是对基础语法掌握的不熟练,否则怎么可能犯这种低级的错误呢?

正确的书写语法如下:

switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: console.log(month+"月有31天"); break; case 4: case 6: case 9: case 11: console.log(month+"月有30天"); break; default: console.log(month+"月有28天"); }

看到这,我才恍然大悟, 合并多个相同功能的 case 语句 原来是这么写的。

//这才是正确的写法 case 1: case 3: case 5 : case 7: //code... break; 结束语

至此,问题就已经被解决了。

switch 结构说明:

switch、case、break、default 都是系统关键字,都必须全小写。switch后的小括号( ):小括号内一般是一个变量名,这个变量可能会有不同的取值。每个 case 的值都会与变量的值进行对比,看是否相等,如果一致就执行该 case 语句对应的代码。所有的 case 都是 “或”(or) 的关系,每时每刻只有一个 case 会满足条件。每个 case 中的代码执行完毕后,必须要用 break 语句来阻止代码自动地向下一个 case运行。如果不写 break 语句的话,下面所有的 case 语句都会执行一遍。请使用 default 关键词来规定匹配不存在时做的事情。可省略不写。

switch 工作原理:

首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。请使用 default 关键词来规定匹配不存在时做的事情。即匹配失败时默认要执行的代码。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3