Sie können, aber sollten Sie nicht, Case-Labels in einem switch
weit schlimmer als das - und weit schlimmer als missbrauchen Duffs Gerät . Duffs Gerät hat das zweifelhafte Privileg, fast plausibel nützlich zu sein und kann dennoch als Missbrauch von switch
angesehen werden.
Nicht jeder Missbrauch von switch
kann plausibel als nützlich erachtet werden. Zum Beispiel kompiliert dies als C oder C ++, selbst wenn strenge Warnungen gesetzt sind:
%Vor%
Mit der Argumentbehandlung können Sie den Startwert festlegen, sodass Sie Ergebnisse reproduzieren können, wenn Sie möchten. Ich würde nicht behaupten, dass es nützlich ist; tatsächlich ist es nicht nützlich. Beachten Sie, dass break
innerhalb der Schleifen die Schleife durchbricht, nicht switch
.
Grundsätzlich müssen case
labels (und default
) im Bereich von switch
liegen und mit dem innersten einschließenden switch
verknüpft sein. Es gibt einige andere Einschränkungen für sie. Sie müssen darauf achten, nicht über Variableninitialisierungen usw. zu springen (deshalb sind j
und k
außerhalb von switch()
definiert). Aber ansonsten sind sie nur Etiketten, und die Kontrolle wird zu ihnen fließen, wenn sie "angemessen" ist.