为了账号安全,请及时绑定邮箱和手机立即绑定

案例B为什么会继续执行下去

B中num=2执行case2,为什么会执行后面的。num又没有累加上去 条件不成立啊

正在回答

4 回答

在B例子中,执行了第二个case , $sum变为20,由于没有break,继续执行第三个case,然后又执行default,$sum变为了40。进了循环后,没有跳出来的关键字,它就会自动走完这个循环再出来。

0 回复 有任何疑惑可以回复我~

break的作用是阻止进行,题主已经知道了。

之所以执行完case2后,还会执行case3,是因为他是按顺序依次进行运算的,

在没有break的情况下,只要在某一个位置满足了条件,这个位置以下的条件都会无效,不管条件对不对,都会运算下去。

$num = 2;
$sum  = 10; 
switch($num){
	case 1:
		$sum = $sum  + 10;//不满足条件,跳过此次运算。
	case 2:
		$sum = $sum  + 10;//在此处case 2满足了条件,下面的运算都会进行,不管条件对不对。
	case 3:
		$sum = $sum  + 10;//因前面case 2的时候已经满足了条件,符合了判断,故此处依然执行
	default:
		$sum = $sum  + 10;//到default结束运算。
}

理清了上面顺序和原因之后,

再来看下,输出结果是40,这个40是怎来的?

初始变量$sum = 10;

在case 2:的时候 $sum = $sum +10; 

这时$sum=20,因为没有了break,故将此结果带入继续进行下面运算;

在case 3:$sum = $sum +10;

此时$sum=20+10 =30;

在default:$sum = $sum+10; //即$sum = 30 +10;

故结果为40



9 回复 有任何疑惑可以回复我~

需要在每个case最后加入break;已停止向下执行。如果不加break,在满足条件的case后面的程序都会执行。

0 回复 有任何疑惑可以回复我~
#1

我不是林俊杰 提问者

可是他执行完case2后num还是=2吧。 那么case3后面就不满足条件了怎么会输出呢
2016-01-31 回复 有任何疑惑可以回复我~

因为B中的switch语句中没有加break,他会从头到尾一个一个的输出

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

案例B为什么会继续执行下去

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信