use*_*809 1 c scope objective-c break switch-statement
我总是不得不在break开关声明中; 简单地用分号;退出是不安全的?
switch ( (rand() % 2) ) {
case 0:
// Do foo;
break;
case 1:
// Do nothing
;
default:
;
}
Run Code Online (Sandbox Code Playgroud)
bbu*_*bum 16
考虑Duff的设备(一个将N个字节从内存中的一个点复制到另一个点的功能):
send(to, from, count)
register short *to, *from;
register count;
{
register n = (count + 7) / 8;
switch(count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while(--n > 0);
}
}
Run Code Online (Sandbox Code Playgroud)
它只能工作 - 而且,是的,它确实有效 - 因为所有情况都会落到下一个,因为没有一个案例使用break;.所以,是的,你必须使用break;退出case,但是下降到下一个case可能是有用的.
尽管如此,正如Duff的设备所简洁地证明的那样,不使用break;它会产生一种独特的代码味道,这种气味对你自己来说太棘手了.
Wai*_*ain 12
分号不会退出开关.否则,每个语句(以分号结尾)都将退出交换机.
如果您不添加中断,则将执行下一个案例.在你的情况下,它可能会像default下一个一样工作,它是空的,但通常你的代码会做出意想不到的事情......
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |