unt*_*led 0 c switch-statement
在案件发生后,交换机不会自动中断的事实是有意或无意的.我认为这是故意的,但我读过的一本书(专家C编程)(它已经老了)认为它是失败的.
也许switch语句中最大的缺陷是案例标签的操作后案例不会自动中断.
那么,它是故意的吗?
这个决定最有可能是为了能够利用案件漏洞(语言设计中没有那么多巧合).
鉴于在现实生活中,现在被很多人视为糟糕的编程实践,并且实际案例是你真的可以用它是非常罕见的,毕竟它可能不是一个好主意(但那是意见为主).
其故意的原因很多.它非常适合菜单驱动的文本界面,您可以将其置于a正上方,A并允许控制流通过两者.一个更复杂的例子是Duff设备.
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)