Ternary operators and Return in C

return is a statement. Statements cannot be used inside expressions in that manner.


Because return is a statement, not an expression. You can't do int a = return 1; either.


The ternary operator deals in expressions, but return is a statement.

The syntax of the return statement is

return expr ;

The syntax of the ternary conditional operator is

expr1 ? expr2 : expr3

So you can plug in an invocation of the ternary operator as the expr in a return statement. But you cannot plug in a return statement as expr2 or expr3 of a ternary operator.

The ternary expression acts a lot like an if statement, but it is not an exact replacement for an if statement. If you want to write

if(sum > 0)
     return 1;
else return 0;

you can write it as a true if statement, but you can't convert it to using ? : without rearranging it a little, as we've seen here.


Because a ternary operation is an expression and you can't use statements in expresssions.

You can easily use a ternary operator in a return though.

return sum > 0 ? 1 : 0;

Or as DrDipShit pointed out:

return sum > 0;