Bonjour,
Compléments de réponses dans l'ordre chronologique:
@Jérémy:
-
Un switch n'est plus ni moins qu'un if...else if en fait ! => Oui, sauf que le compilateur optimise suivant le nombre de cas à tester (cf.
Implémentation)
-
le break fait sauter directement à la fin du case ! => Non, fait sauter directement à la fin du
switch à
son l'accolade fermante terminant l'exécution de l'instruction
switch pour être précis
@Gérard:
-
Si on entre dans un cas, il n'est pas nécessaire d'évaluer tous les autres cas qui suivent => En quelque sorte oui, mais il est plus juste d'écrire "
il ne faut pas évaluer..." dans le cas avec
break 
. Attention à l'absence involontaire de
break qui conduit à un enchainement d'instructions de plusieurs cas mais qui peut être volontaire si cet enchainement est souhaité; mettre dans ce cas un commentaire explicite ou mieux une instruction
goto / label pour le lecteur du code qui n'aura pas à se poser de question (volontaire ou oublie ?)
-
J'ai loupé quelque chose ? => Oui et non, si un doute toujours se reporter
aux spécifications du langage (cf. notamment
Instruction switch)
NB: L’accueil d'accolades ouvrante / fermante dans le bloc
case / break est requis lorsque le compilateur
"accepte" la définition de variables locales dans ce bloc mais n'est pas obligatoire si aucune variable n'est à définir (désolé d'insister

).
Voir
C++ : Déclarer une variable dans un switch; c'est expliqué pour du C++ mais le compilateur C applique la même règle...