Betrachten Sie die folgende switchAussage:
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.
gotoist nicht böse. Frachtkult Anhänger sind! Sie können sich nicht vorstellen, welche Extreme Menschen vermeiden können, gotoweil es angeblich so böse ist und ihren Code wirklich unleserlich macht.
gotosimuliere hauptsächlich so etwas wie eine finallyKlausel in Funktionen, in denen Ressourcen (Dateien, Speicher) beim Stoppen freigegeben werden müssen, und wiederhole für jeden Fehlerfall eine Liste von freeund closehilft 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 switchin dieser Schleife befinde.