Betrachten Sie die folgende switch
Aussage:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Dieser Code wird kompiliert, aber ist er für C90 / C99 gültig (= definiertes Verhalten)? Ich habe noch nie Code gesehen, bei dem der Standardfall nicht der letzte ist.
EDIT:
Wie Jon Cage und KillianDS schreiben: Das ist wirklich hässlicher und verwirrender Code und ich bin mir dessen sehr bewusst. Ich interessiere mich nur für die allgemeine Syntax (ist sie definiert?) Und die erwartete Ausgabe.
goto
ist nicht böse. Frachtkult Anhänger sind! Sie können sich nicht vorstellen, welche Extreme Menschen vermeiden können, goto
weil es angeblich so böse ist und ihren Code wirklich unleserlich macht.
goto
simuliere hauptsächlich so etwas wie eine finally
Klausel in Funktionen, in denen Ressourcen (Dateien, Speicher) beim Stoppen freigegeben werden müssen, und wiederhole für jeden Fehlerfall eine Liste von free
und close
hilft nicht bei der Lesbarkeit. Es gibt zwar eine Verwendung goto
, die ich vermeiden möchte, aber nicht kann, wenn ich aus einer Schleife ausbrechen möchte und mich in einer switch
in dieser Schleife befinde.