Considérez la switchdé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.
goton'est pas mal. Les adeptes du culte du fret le sont! Vous ne pouvez pas imaginer les extrêmes que les gens peuvent éviter gotoparce que c'est prétendument si maléfique, ce qui crée un véritable gâchis illisible de leur code.
gotoprincipalement pour simuler quelque chose comme une finallyclause 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 freeet closen'aide pas à la lisibilité. Il y a bien une utilisation gotoque j'aimerais éviter mais que je ne peux pas, c'est quand je veux sortir d'une boucle et que je suis dans switchcette boucle.