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;