Rechercher
 

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 :

Instruction switch / case

Syntaxe d'utilisation

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.

Exemple de code

#include <cstdlib>

#include <iostream>

using namespace std;


int main( int argc, char * argv[] ) {

    if ( argc == 1 ) {
        cout << "Usage: commandName integerValue" << endl;
        exit( 0 );
    }     
    int value = atoi( argv[1] );

    switch( value ) {
        case 1:
            cout << "One" << endl;
            break;
        case 2:
            cout << "Two" << endl;
            break;
        case 3:
            cout << "Three" << endl;
            break;
        default:
            cout << "Other value" << endl;
    }

    return 0;
}

Sujets connexes