黑马程序员技术交流社区

标题: 请教问题 [打印本页]

作者: zhang894095    时间: 2016-7-1 12:46
标题: 请教问题
请问大神们有没有循环switch语句的case穿透的详细透彻的解释

还有一个是for(;;){}死循环语句为什么这么定义,中间的默认条件是什么???
作者: 元笙    时间: 2016-7-1 15:29
本帖最后由 元笙 于 2016-7-1 15:35 编辑

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

作者: zhang894095    时间: 2016-7-1 23:13
元笙 发表于 2016-7-1 15:29
这个你必须先理解顺序结构,所有的代码执行都是顺序的,除非出现跳转语句,switch底层如何实现多分支选择?
swi ...

恩恩,那个switch遇到default执行后如果没有break,向下执行会出现case穿透吗?
作者: zhang894095    时间: 2016-7-1 23:15
如果switch语句在执行default语句后没有break语句而且default是在在最前面的下面的case都没有break  这种情况也会出现case穿透吗?
作者: 安生安徒生    时间: 2016-7-1 23:17
zhang894095 发表于 2016-7-1 23:15
如果switch语句在执行default语句后没有break语句而且default是在在最前面的下面的case都没有break  这种情 ...

会,只要switch选择一个case或者default进入了,只要没有break 就会从上到下穿透
作者: zhang894095    时间: 2016-7-1 23:20
thank you





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2