Operatore di selezione switch.
L'operatore switch consente di creare un comodo costrutto che ramifica le azioni in base al valore di una variabile, la sintassi è:
switch (mode)
{
case 0:
// esegui se mode == 0
break;
case 1:
// esegui se mode == 1
break;
case 2:
case 3:
case 4:
// esegui se mode == 2, 3 o 4
break;
default:
// eseguire se il mode non corrisponde a nessuno dei case
break;
}
La presenza dell'istruzione di default è facoltativa. La presenza della dichiarazione di break è obbligatoria, altrimenti il confronto andrà oltre, come mostrato per i case 2, 3 e 4.
Con l'aiuto di operatori condizionali e operatori di selezione si costruisce la logica del programma. L'operatore condizionale ti aiuterà a confrontare il valore e decidere cosa fare dopo. L'operatore di selezione si occuperà perfettamente della modifica del programma.
È necessario prestare estrema attenzione quando si lavora con l'istruzione switch, poiché il codice all'interno delle parentesi graffe switch() { } è un blocco di codice per tutti i case. Di conseguenza, i case sono solo etichette per la transizione tra le sezioni di questo blocco. Perché questo è così importante: tutti i case sono nello stesso ambito, ovvero variabili locali con lo stesso nome non possono essere dichiarate all'interno di switch:
switch (mode)
{
case 0:
int val = 5;
break;
case 1:
int val = 5; // risulterà in un errore
break;
case 2:
break;
}
Inoltre è fortemente sconsigliato creare variabili locali all'interno dei case.
switch (mode)
{
case 0:
break;
case 1:
// variabile locale
int val = 5;
break;
case 2:
// con mode == 2, "Electron32" verrà visualizzato solo se si rimuove la variabile locale sopra. Serial.println("Electron32");
break;
}
Cosa fare se si vuole veramente o se si ha veramente bisogno? Avvolgi il contenuto della case in un blocco usando le parentesi graffe:
switch (mode)
{
case 0:
break;
case 1:
{
int val = 5;
}
break;
case 2:
Serial.println("Electron32" );
break;
}