? -- this is how branching is done -- like C's if()
? :
Example: y ? z;
Example: y ? z : x;
Evaluates the first parameter 'y', and if nonzero, evaluates and returns the second parameter 'z'. If a third parameter 'x' is specified (after the :), and the first parameter is zero, evaluates and returns 'x'. The latter two expressions may often contain multiple statements seperated by semicolons,
i.e.
x % 5 ? (
f += 1;
x *= 1.5;
) : (
f=max(3,f);
x=0;
);