L'istruzione switch, o switch case, in C

L’istruzione switch in C, chiamata anche switch case, è una struttura di controllo che permette di implementare una sequenza di decisioni successive basate sul confronto del valore di un’espressione. Lo switch funziona in modo analogo ad una selezione multipla realizzata con una serie di istruzioni if, con l’unica differenza che lo switch case risulta essere più conciso e più leggibile. La sintassi dell’istruzione switch è la seguente:


 
switch(espressione){
    case valore_costante1:
        //blocco di codice eseguito se l'espressione equivale a
        //valore_costante1
    break;
    
    case valore_costante2:
        //blocco di codice eseguito se l'espressione equivale a
        //valore_costante2
    break;
    
    default:
        //blocco di codice eseguito se l'espressione non equivale a
        //nessun valore definito precedentemente
    break;
}

Tra le parentesi tonde dell’istruzione switch viene indicata un’espressione matematica oppure semplicemente una variabile e nei successivi case vengono indicati i possibili valori (int o char) che l’espressione potrebbe assumere con i relativi blocchi di codice da eseguire. Se l’espressione assume il valore di un case, allora il programma esegue il blocco di codice correlato a quel case. Se, invece, l’espressione assume un valore non definito nei case, allora verrà eseguito il case default, cioè un caso predefinito che viene raggiunto se tutti i confronti precedenti risultano essere falsi.

Il case default risulta essere facoltativo, in quanto può essere omesso dalla struttura dello switch, tuttavia è consigliato aggiungerlo poiché permette di gestire tutte le casistiche non gestite dai case specifici.

Nota: ad ogni case è possibile aggiungere l’istruzione break, in questo modo viene eseguito solo il primo case che risulta essere verificato. Mentre rimuovendo i break, è possibile che vengano eseguiti tutti i case, uno dopo l’altro.

Esempio di utilizzo di switch case in C

Di seguito un esempio di applicazione dello switch case in c, in cui viene realizzato un banale menu contenente tre voci selezionabili digitando il rispettivo carattere. Il programma chiede all’utente di inserire una delle lettere richieste (a, b, q) e in tal caso verrà stampato a schermo, utilizzando la funzione printf, il corrispondente messaggio definito nei case, oppure viene eseguito il case default.



 
#include <stdio.h>

int main(){
    char scelta;

    printf("--- Menu ---\n");
    printf("a) Ciao\n");
    printf("b) :)\n");
    printf("q) Esci\n");
    printf("scegli: ");
    scanf("%c", &scelta);

    switch(scelta){
        case 'a':
            printf("Ciao\n");
        break;
        case 'b':
            printf(":)\n");
        break;
        case 'q':
            printf("Arrivederci\n");
        break;
        default:
            printf("Puoi scegliere solo tra: a, b, q\n");
        break;
    }

    return 0;
}

Indice pagine linguaggio C: