Quando si ha bisogno di verificare che una variabile assuma un valore in una lista di opzioni possibili, si può evitare di scrivere degli if successivi, adoperando, appunto, il costrutto
switch()
Quest'ultimo segue il seguente schema:
switch(<variabile>)
{
case <valore 1> :
break;
/* blocco di istruzioni */
case <valore 2> :
break;
/* blocco di istruzioni */
case <valore 3> :
break;
/* blocco di istruzioni */
.
.
.
case <valore n> :
break;
/* blocco di istruzioni */
default:
/* blocco di istruzioni */
}/* fine blocco switch() */
Dove default: è seguito dalle istruzioni da eseguire laddove nessuno dei casi sopra si verifichi.
Importante: notare che, se si omette l'istruzione break; ad esempio, nel blocco 2, il programma non salta direttamente alla fine del blocco switch, bensì esegue il blocco di istruzioni 3. Questo a differenza di costrutti analoghi in altri linguaggi, come il CASE...OF del Pascal.
Segue un semplice esempio di programma a scopo puramente dimostrativo:
1 #include<stdio.h>
2 int main()
3 {
4 int a;
5 printf("\tInserisci un intero da 1 a 6\n");
6 scanf("%d",&a);
7
8 switch(a){
9 case 1 :
10 printf("\t Hai inserito uno\n");
11 break;
12 case 2:
13 printf("\t Hai inserito due\n");
14 break;
15 case 3:
16 printf("\t Hai inserito tre\n");
17 break;
18 case 4:
19 printf("\t Hai inserito quattro\n");
20 break;
21 case 5:
22 printf("\t Hai inserito cinque\n");
23 break;
24 case 6:
25 printf("\t Hai inserito sei\n");
26 break;
27
28 deafult: break;
29 }/* fine switch() */
30
31
32 }/* main */
33