E' qualcosa di più di un semplice if alternativo: è un operatore (come ha giustamente detto Michele Facchin).
Questo significa che se l'espressione booleana risulta vera, l'intero codice assume come valore l'espressione dopo il punto di domanda, altrimenti l'intero codice assume il valore dopo i due punti.
Tramite quell'operatore si possono abbreviare enormemente codici, altrimenti, più "pesanti". Prova a vedere questo codice, ad esempio:
codice:
int fattoriale(int x) {
if (!x) {
return 1;
} else {
return x * fattoriale(x - 1);
}
}
Può essere scritto in una sola riga:
codice:
int fattoriale(int x) {
return (!x) ? 1 : x * fattoriale(x - 1);
}
Ciao.