写switch case语句不加break会怎样

2025-04-09 10:23:11
推荐回答(2个)
回答1:

switch 语句 中 case 几 冒号,相当于 入口指示牌, 若 不加break; 则 从 入口case 进入后,接着会依次通过所有后续 case 指示牌 和语句,直到 switch 语句 结束处。
例如:
n=2; switch(n) { case 1: x=9; case 2: x=7; case 4: x=12; defualt: x=8;}
将从 case 2: 进入,依次执行:
x=7; case 4: x=12; defualt: x=8; 结束。最终 得到 x=8。
如果是 n=2; switch(n) { case 1: x=9; case 2: x=7; break; case 4: x=12;break; defualt: x=8;} ; 将从 case 2: 进入 执行 x=7; 遇 break; 则结束开关语句。最终 得到 x=7。

回答2:

switch case语句犯得错误:
会犯这种错误,都是基础不牢固导致的。但是这样的错误却花费了我数小时去debug.想来真是很让人郁闷。
看一段代码:(不想看代码直接看后面总结)
private void arrange() {
switch (direction) {
case 'U':
case'R':
case'D':
case'L':
}
在这个语句中,如果direction=U。那么四个case语句都将执行。如果direction=R。将执行剩下三个语句。原因是switch语句原理是跳转到caseX位置执行剩下的语句,直到最后或者遇见break为止。因此在每一条语句最后+break即可。
private void arrange() {
switch (direction) {
case 'U': break;
case'R': break;
case'D': break;
case'L': break;
}
这样就能,每一个direction执行一步操作。
当然还有 别的用法,比如一个direction,让他可以执行两条或者3条操作这种。
总结:
switch语句原理是跳转到caseX位置执行剩下所有的语句(包括其他case里面的),直到最后或者遇见break为止。因此在每一条语句最后+break即可。
因此不加break的话将会执行跳转到的case本身以及以下所有的语句。