Option A: assignment statements always return in parenthesis in the case of a conditional operator. It should be a>b? (c=30):(c=40);
Option B: it is syntactically wrong.
Option D: syntatically wrong, it should be return(a>b ? a:b);
Option C: it uses a nested conditional operator, this is logic for finding the greatest number out of three numbers.

Here, Multiplication will happen before the addition, but in which order the functions would be called is undefined. In an arithmetic expression, the parenthesis tells the compiler which operands go with which operators but do not force the compiler to evaluate everything within the parenthesis first.

An operation with only one operand is called unary operation. Unary operators: ! Logical NOT operator. ~ bitwise NOT operator. sizeof Size-of operator.
&& Logical AND is a logical operator.
Therefore, 1, 2, 3 are unary operators.