Ternary operators and Return in C

社会主义新天地 提交于 2019-11-26 22:57:02

问题


Why can't we use return keyword inside ternary operators in C, like this: sum > 0 ? return 1 : return 0;


回答1:


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




回答2:


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;



回答3:


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.




回答4:


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




回答5:


See the syntax of a ternary operator is

expr1 ? expr2: expr3;

where expr1, expr2, expr3 are expressions;

The operator ?: works as follows expr1 is evaluated first if it is true expr2 is evaluated otherwise expr3 is evaluated.

hence in expressions the return statement can not be used in C-language.




回答6:


The return statement is used for returning from a function, you can't use inside ternary operator.

 (1==1)? return 1 : return 0; /* can't use return inside ternary operator */

you can make it like

return (1==1) ? 1 : 0;

The syntax of a ternary operator follows as

expr1 ? expr2 : expr3;

where expr1, expr2, expr3 are expressions and return is a statement, not an expression.




回答7:


Just by looking at the syntax you should know that an statement cannot be used in an expression. What you want can be achived by doing:return sum > 0 ? 1 : 0;



来源:https://stackoverflow.com/questions/3566413/ternary-operators-and-return-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!