This ternary operator is the conditional operator. It takes the form:
e1 ? e2 : e3
where expression 'e1' is evaluated first. If it is true (nonzero) then expression 'e2' is evaluated and this is the value of the total expression. If 'e1' was false (zero) then expression 'e3' is evaluated and this is the value of the total expression. This operator guarantees to evaluate either 'e2' or 'e3' but never both.
Thus the statement:
z=(a<b) ? x*x : y*z;
is equivalent to:
if (a<b) z=x*x; else z=y*z;
but has more flexibility in use.