switch ( expression ) { case value1: statement; [statement]... break; case value2: statement; [statement]... break; default: statement; [statement]... }
L'instruction switch
permet, comme l'instruction if
, de déclencher des traitements en fonction
d'une condition (d'un test). D'un certain point de vue, cette instruction est similaire à plusieurs if
imbriqués.
Néanmoins les performances sont souvent meilleures avec un switch
car un tableau de pointeurs, contenant les adresses des codes
à exécuter, est calculé une fois pour toute. Ainsi, quelque soit la valeur considérée, le temps nécessaire à trouver le code à exécuter est
constant, contrairement à plusieurs instructions if
imbriquées.
La sélection du bloc d'instruction à exécuter s'effectue grâce à la valeur d'une expression. Cette expression doit calculer une valeur dont le type fait
partie de la liste suivante : char
, short
, int
, long
, un pointeur ou un type énumérés.
Notez que le bloc d'instruction à exécuter ne nécessite pas d'accolades. Néanmoins, le fait d'utiliser des accolades permet de mieux controler la
durée de vie des variables qui pourraient être définies dans un switch
.
L'utilisation de l'instruction switch
est souvent couplée à l'instruction break
. Effectivement, si un bloc d'instructions est
exécuté et si celui-ci ne se temine pas par l'instruction break
, alors l'exécution du bloc suivant (dans l'ordre de déclaration) sera lancé
et ainsi de suite. Cela est pratique pour définir un même traitement pour plusieurs cas.
#include <stdio.h> #include <stdlib.h> int main( int argc, char * argv[] ) { if ( argc == 1 ) { printf( "Usage: commandName integerValue\n" ); exit( 0 ); } int value = atoi( argv[1] ); switch( value ) { case 1: printf( "One\n" ); break; case 2: printf( "Two\n" ); break; case 3: printf( "Three\n" ); break; default: printf( "Other value\n" ); } return 0; }
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :