Considera la seguente switchdichiarazione:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Questo codice viene compilato, ma è valido (= comportamento definito) per C90 / C99? Non ho mai visto il codice in cui il caso predefinito non è l'ultimo caso.
EDIT:
Come scrivono Jon Cage e KillianDS : questo è un codice davvero brutto e confuso e ne sono ben consapevole. Sono solo interessato alla sintassi generale (è definita?) E all'output previsto.
gotonon è malvagio. I seguaci del culto del carico sono! Non si può immaginare fino a che punto le persone possano evitare gotoperché è maledettamente così malvagia, facendo un vero pasticcio illeggibile del loro codice.
gotoprincipalmente per simulare qualcosa come una finallyclausola nelle funzioni, in cui risorse (file, memoria) devono essere rilasciate quando si interrompe e ripetendo per ogni errore un elenco di freee closenon aiuta per la leggibilità. C'è però un uso gotoche vorrei evitare ma che non posso, è quando voglio uscire da un ciclo e mi trovo all'interno di un switchcircuito.