交换机没有自动中断是故意的吗?

unt*_*led 0 c switch-statement

在案件发生后,交换机不会自动中断的事实是有意或无意的.我认为这是故意的,但我读过的一本书(专家C编程)(它已经老了)认为它是失败的.

也许switch语句中最大的缺陷是案例标签的操作后案例不会自动中断.

那么,它是故意的吗?

tof*_*fro 7

这个决定最有可能是为了能够利用案件漏洞(语言设计中没有那么多巧合).

鉴于在现实生活中,现在被很多人视为糟糕的编程实践,并且实际案例是你真的可以用它是非常罕见的,毕竟它可能不是一个好主意(但那是意见为主).


Rus*_*haw 5

其故意的原因很多.它非常适合菜单驱动的文本界面,您可以将其置于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)