switch...case...default...执行顺序
来源:互联网 发布:空调遥控器软件 编辑:程序博客网 时间:2024/06/05 20:24
首先,switch执行规则是:
判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的所有的程序代码(不管后面的case是否匹配,都执行),直到遇见break或者语句块结束。
其次,说说我的结论:把default当做一个特殊的case语句(default的条件为:switch中的值不满足其他任何case),按照上述switch处理case语句的规则执行即可(也就是执行结果和顺序、break有关)
下面分5种情况讨论,主函数如下:
也就是x依次从0到6,看看switch...case...default...语句的运行结果。
void main(){int x=0;printf("choice1:\n");for(x=0;x<=6;x++){printf("\nx=%d\n",x);choice1(x);}printf("\nchoice2:\n");for(x=0;x<=6;x++){printf("\nx=%d\n",x);choice2(x);}printf("\nchoice3:\n");for(x=0;x<=6;x++){printf("\nx=%d\n",x);choice3(x);}printf("\nchoice4:\n");for(x=0;x<=6;x++){printf("\nx=%d\n",x);choice4(x);}printf("\nchoice5:\n");for(x=0;x<=6;x++){printf("\nx=%d\n",x);choice5(x);}}
(1)case中没有break语句,default放在最后,根据执行规则即可。
void choice1(int x){switch(x){case 1: printf("1:%d\n",x);case 2: printf("2:%d\n",x);case 3: printf("3:%d\n",x);case 4: printf("4:%d\n",x);case 5: printf("5:%d\n",x);default: printf("default:%d\n",x);}}
(2)case中有break语句,default放在最后,根据执行规则即可。
void choice2(int x){switch(x){case 1: printf("1:%d\n",x);break;case 2: printf("2:%d\n",x);break;case 3: printf("3:%d\n",x);break;case 4: printf("4:%d\n",x);break;case 5: printf("5:%d\n",x);break;default: printf("default:%d\n",x);}}
(3)case中没有break语句,default放在最前面
void choice3(int x){switch(x){default: printf("default:%d\n",x);case 1: printf("1:%d\n",x);case 2: printf("2:%d\n",x);case 3: printf("3:%d\n",x);case 4: printf("4:%d\n",x);case 5: printf("5:%d\n",x);}}运行结果如下:
choice3:x=0default:01:02:03:04:05:0x=11:12:13:14:15:1x=22:23:24:25:2x=33:34:35:3x=44:45:4x=55:5x=6default:61:62:63:64:65:6
和我的结论符合,当x=0或者x=6时,不满足其他case条件(1~5),执行default语句,因为没有break语句,所以从default开始一直执行到最后。
(4)case中有break语句,default放在最前面,但是default语句没有break,所以如果default语句满足的话,也会执行case 1后面的语句直到break
void choice4(int x){switch(x){default: printf("default:%d\n",x);case 1: printf("1:%d\n",x);break;case 2: printf("2:%d\n",x);break;case 3: printf("3:%d\n",x);break;case 4: printf("4:%d\n",x);break;case 5: printf("5:%d\n",x);break;}}运行结果如下:
choice4:x=0default:01:0x=11:1x=22:2x=33:3x=44:4x=55:5x=6default:61:6
(5)case中有break语句,default放在最前面,default语句也有break。这时候default的位置就没有任何关系了。就相当于无论如何,只能执行一种case情况(default是特殊的case)。
void choice5(int x){switch(x){default: printf("default:%d\n",x);break;case 1: printf("1:%d\n",x);break;case 2: printf("2:%d\n",x);break;case 3: printf("3:%d\n",x);break;case 4: printf("4:%d\n",x);break;case 5: printf("5:%d\n",x);break;}}
运行结果如下:
choice5:x=0default:0x=11:1x=22:2x=33:3x=44:4x=55:5x=6default:6
0 0
- switch...case...default...执行顺序
- 关于SWITCH中CASE的执行顺序。
- switch中的非case非default语句会执行吗?
- switch与case及default
- JavaScript -- switch,case,break,default
- js switch case default 的用法
- C#语言中switch模块case default
- switch case break default 判断语句
- javascript switch default写在case前
- 关于switch-case的default坑
- switch case语句中的default语句
- switch(A){case a: break;........default :}用法
- swith case执行顺序
- switch内部执行顺序
- 【Java基础知识】switch表达式、case穿透、default、switch结束条件
- Java中switch语句真正执行顺序及default位置对结果的影响
- switch-case语句在未加break时的执行顺序
- switch case语句:从匹配处顺序执行,直到遇到break或结束
- Ant安装、环境变量配置及验证
- 工具收集
- Linux使用iptables禁止某些IP访问
- centos 6.5 安装tomcat tar.gz操作步骤
- 移动应用微信登录开发指南
- switch...case...default...执行顺序
- jquery的jquery.validate.js使用方法
- 图像数据格式基础知识
- C# 调用RTX发消息
- 三极管典型开关电路
- iOS开发之-Scroll View Programming 2-Zooming
- 函数指针例程一
- js闭包的用途
- 分布式操作系统笔记