Operatore ternario ?.
L'operatore ternario (?), è una versione più breve del costrutto if else. Azione dell'operatore ternario (?) ha la seguente forma:
condizione ? espressione1 : espressione2
Funziona così: la condizione viene valutata, se è true, l'intera azione restituisce il valore dell'espressione1, e se è false, l'intera azione restituisce il valore dell'espressione2. Esempio:
byte a;
byte
b;
a = 5;
b = (a > 4) ? 7 : 32;
Se a < 4, b è impostato su 32, altrimenti b è impostato su 7
Costruzione simile su if-else.
a = 5;
if (a > 4)
b = 7;
else
b = 32;
Un'altra opzione di calcolo:
byte a = 5;
byte
b = 7;
b += (a > 4) ? (a * 7) : (a + 7);
Aggiungi a b il risultato dell'espressione a*7 se a > 5 altrimenti aggiungi a+7
Allo stesso modo puoi usare l'operatore ternario (?)
per inviare dati e testo alla porta seriale.
Serial.println((a > 5) ? "maggiore di 5" : "minore di 5");
Un punto importante: se il risultato è assegnato o passato a una funzione, il tipo di dati deve essere lo stesso! Cioè, il codice Serial.println((a > 5) ? 5 : "meno di 5"); risulterà in un errore poiché stiamo cercando di passare un int o un char e il compilatore non può compilare questo caso.
È anche possibile ottenere valori dalle funzioni se hanno lo stesso tipo di dati di ritorno:
a = condition ? func1() : func2();
È possibile fare una costruzione più complessa sull'operatore ternario (?)
, come else if. Esempio: