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