Articolo originale: Ternary Operator in C Explained di freeCodeCamp.org

Tradotto e adattato da: Ilenia Magoni

I programmatori usano l'operatore ternario per prendere decisioni al posto delle più lunghe espressioni condizionali if ed else.

L'operatore ternario accetta tre argomenti:

  1. Il primo è l'argomento di comparazione
  2. Il secondo è il risultato per una comparazione vera
  3. Il terzo è il risultato per una comparazione falsa

Potresti pensare all'operatore ternario come a un modo breve per scrivere una espressione if-else. Ecco un piccolo esempio decisionale usando if e else:

int a = 10, b = 20, c;

if (a < b) {
    c = a;
}
else {
    c = b;
}

printf("%d", c);

Questo esempio occupa più di 10 righe, ma non è necessario che sia così lungo. Puoi scrivere questo programmino in tre righe di codice usando un operatore ternario.

Sintassi

condizione ? valore_se_vero : valore_se_falso

L'espressione diventa valore_se_vero se condizione è vera, e valore_se_falso altrimenti.

Ecco l'esempio sopra riscritto usando l'operatore ternario:

int a = 10, b = 20, c;

c = (a < b) ? a : b;

printf("%d", c);

L'output dell'esempio sarà:

10

c prende il valore di a, perché la condizione a < b è vera.

Ricorda che gli argomenti valore_se_vero e valore_se_falso devono essere dello stesso tipo e possono essere solo espressioni semplici.

Gli operatori ternari possono essere annidati proprio come le espressioni if-else. Considera il seguente codice:

int a = 1, b = 2, ans;
if (a == 1) {
    if (b == 2) {
        ans = 3;
    } else {
        ans = 5;
    }
} else {
    ans = 0;
}
printf ("%d\n", ans);

Ecco il codice sopra riscritto usando un operatore ternario annidato:

int a = 1, b = 2, ans;
ans = (a == 1 ? (b == 2 ? 3 : 5) : 0);
printf ("%d\n", ans);

L'output di entrambi i codici qui sopra è:

3