Ich kann dir nur eine Antwort auf die erste Frage geben: Ja, du hast es richtig erkannt. Wenn der Wert vor dem Fragezeichen true ergibt, wird der Wert/die Anweisung links von dem Doppelpunkt benutzt, anderenfalls die rechte.
das ist eine bedingte Bewertung, also quasi ein if innerhalb eines Ausdrucks. Also keine Kurzform, ist schon auch ein bisschen was anderes. Ein if schreibt man (vereinfacht gesagt) außen um Ausdrücke rum, eine bedingte Bewertung schreibt man in einen Ausdruck.
?
=
Ternärer Operator(3 Operanden), Erbe von C "bedingter Ausdruck/ conditional Expression", hat die 2. niedrigste Priorität.
"?" ist deutlich kürzer als die alternative Schreibweise.
value = bExpression ? a : b
Schont die Finger, kann bei Verschachtelung allerdings unübersichtlich werden.
Wann man ?: benutzen sollte? IMHO gar nicht, da es nicht zur Übersichtlichkeit beiträgt, sondern den Quellcode kryptischer und schlechter lesbar macht.
IMHO ein (unnötiges) Überbleibsel aus der C++-Welt.
älter: C,
auch Sache der Quellcodeformatierung( manchmal doch Übersichtlicher als verschachtelten if-else-if-else-if). Nicht notwendig, manchmal ok(sollte nicht die Regel werden, die Kunst liegt in der selektiven Anwendung(selten))