Das ist der "Conditional Operator". Einfach gesagt, der Ausdruck
a ? b : chat den Wert des Ausdrucks b, wenn a wahr ist (also ungleich 0), und den Wert des Ausdrucks c, wenn a falsch ist.
Sinngemäß: Wenn a, dann b, sonst c.
Es gibt dann noch ein paar komplizierte Regeln für die erlaubten Typkombinationen von b und c.
Du brauchst nicht 3 oder 4 Fragezeichen zu machen, wir verstehen auch so, dass das eine Frage ist
Der Ausdruck a kann ein beliebiger arithmetischer, Enum- oder Zeiger-Ausdruck sein, also auch einer mit == oder !=.