目录
代码中 虽然没有 限制 if else 能够处理的 分支 数量 ,但当分支过多时 ,
用 if else 处理会不太方便 ,而且容易出现 if else 配对出错的情况 。
所以 对于这种情况 ,实际开发中一般使用 switch 语句代替
switch 是另外一种选择结构的语句 , 用来代替简单的、
拥有多个分枝的 if else 语句 ,基本格式如下 :
switch(表达式){ case 整型数值1: 语句 1; case 整型数值2: 语句 2; ...... case 整型数值n: 语句 n; default: 语句 n+1; }
它的执行过程是:
1) 首先计算 “表达式” 的值 ,假设 为 m 。
2) 从第一个 case 开始 ,比较 “整型数值1” 和 m ,如果它们相等 ,就执行冒号 : 后面的所有语句 ,也就是从 “语句1” 一直执行到 “语句n+1” ,
而不管后面的 case 是否匹配成功 。
3) 如果 “整型数值1” 和 m 不相等 ,就跳过冒号后面的 “语句1” ,继续比较第二个 case 、第三个 case ……
一旦发现和某个整型数值相等了 ,就会执行后面所有的语句 。
假设 m 和 “整型数值5” 相等 ,那么就会从 “语句5” 一直执行到 “语句n+1” 。
4) 如果直到最后一个 “整型数值n” 都没有找到相等的值,那么就执行 default 后的 “语句 n+1” 。
需要重点强调的是,当和某个整型数值匹配成功后,
会执行该分支以及后面所有分支的语句。
这显然不是我们想要的结果 ,为了达到这个目标 ,
必须要在 每个分支 最后 添加
break;
语句 。
break 是 C 语言中的一个 关键字 ,专门用于 跳出 switch 语句 。所谓 “ 跳出 ” ,是指一旦遇到 break ,就不再执行 switch 中的任何语句 ,
包括当前分支中的语句和其他分支中的语句 ;
也就是说 ,整个 switch 执行结束了 ,接着会执行整个 switch 后面的代码 。
最后需要说明的两点是:
1、default 是最后一个分支,匹配后不会再执行其他分支,
所以也可以不添加
break;
语句。2、default 不是必须的 。
当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。
把一个 switch 作为一个外部 switch 的语句序列的一部分,
即可以在一个 switch 语句内使用另一个 switch 语句。
即使 内部 和 外部 switch 的 case 常量包含共同的值,也没有矛盾。
示例 :
例子 :
#includeh> int main () { /* 局部变量定义 */ int a = 100; int b = 200; switch(a) { case 100: printf("这是外部 switch 的一部分\n"); switch(b) { case 200: printf("这是内部 switch 的一部分\n"); } } printf("a 的准确值是 %d\n", a ); printf("b 的准确值是 %d\n", b ); return 0; }
前端 Vue 项目内所用 :
switch (item.type) { case 'RADIO': // 单选题 break; case 'CHECKBOX': // 多选题 break; case 'FILLBLANK': // 填空题 switch (item.quInputType) { case '1': // 文本框 break; case '2': // 日期框 break; case '3': // 数字框 break; } break; default: break; }