A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhang894095 中级黑马   /  2016-7-1 12:46  /  495 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问大神们有没有循环switch语句的case穿透的详细透彻的解释

还有一个是for(;;){}死循环语句为什么这么定义,中间的默认条件是什么???

5 个回复

倒序浏览
本帖最后由 元笙 于 2016-7-1 15:35 编辑

这个你必须先理解顺序结构,所有的代码执行都是顺序的,除非出现跳转语句,switch底层如何实现多分支选择?
switch根据( )中的表达式结果来进行条件匹配,一旦匹配上case,就不会再进行匹配(因为,从理论上来说你使用switch就是为了多分支选择,怎么可能让每个分支都执行或部分分支执行呢)因此,如果在匹配一个case后,没有break语句跳出,则会出现case穿透,因为会顺序执行嘛,
第二个问题,更简单了,for( 表达式1; 条件结束判断表达式2 ; 循环控制条件表达式3),注意默认条件结束判断表达式2为真(如果没有显式写出),至于为什么默认是true,我觉得没必要较真,这是设计者考虑的
回复 使用道具 举报
元笙 发表于 2016-7-1 15:29
这个你必须先理解顺序结构,所有的代码执行都是顺序的,除非出现跳转语句,switch底层如何实现多分支选择?
swi ...

恩恩,那个switch遇到default执行后如果没有break,向下执行会出现case穿透吗?
回复 使用道具 举报
如果switch语句在执行default语句后没有break语句而且default是在在最前面的下面的case都没有break  这种情况也会出现case穿透吗?
回复 使用道具 举报
zhang894095 发表于 2016-7-1 23:15
如果switch语句在执行default语句后没有break语句而且default是在在最前面的下面的case都没有break  这种情 ...

会,只要switch选择一个case或者default进入了,只要没有break 就会从上到下穿透
回复 使用道具 举报
thank you
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马