Considérez la switch
déclaration suivante :
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Ce code se compile, mais est-il valide (= comportement défini) pour C90 / C99? Je n'ai jamais vu de code où le cas par défaut n'est pas le dernier cas.
EDIT:
Comme l' écrivent Jon Cage et KillianDS : c'est un code vraiment laid et déroutant et j'en suis bien conscient. Je suis juste intéressé par la syntaxe générale (est-elle définie?) Et le résultat attendu.
goto
n'est pas mal. Les adeptes du culte du fret le sont! Vous ne pouvez pas imaginer les extrêmes que les gens peuvent éviter goto
parce que c'est prétendument si maléfique, ce qui crée un véritable gâchis illisible de leur code.
goto
principalement pour simuler quelque chose comme une finally
clause dans les fonctions, où les ressources (fichiers, mémoire) doivent être libérées lors de l'arrêt, et répéter pour chaque cas d'erreur une liste de free
et close
n'aide pas à la lisibilité. Il y a bien une utilisation goto
que j'aimerais éviter mais que je ne peux pas, c'est quand je veux sortir d'une boucle et que je suis dans switch
cette boucle.