il ? usato in quel modo si chiama operatore ternario,
esiste anche in altri linguaggi

quando il risultato di una struttura condizionale e una sola assegnazione puoi scrivere
variabile=(condizione)?valoreSeCondizioneVera:valo reSeCondizioneFalsa;

che equivale a

if(condizione){variabile=valoreSeCondizioneVera;}
else {variabile=valoreSeCondizioneFalsa;}


ciao