三元运算符和C语言的返回

nul*_*ion 20 c conditional-operator

为什么我们不能在C中的三元运算符中使用return关键字,如下所示:sum> 0?返回1:返回0;

Ign*_*ams 33

return是一份声明.语句不能以这种方式在表达式中使用.


Wol*_*lph 29

因为三元运算是表达式而您不能在表达式中使用语句.

您可以在返回时轻松使用三元运算符.

return sum > 0 ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

或者DrDipShit指出:

return sum > 0;
Run Code Online (Sandbox Code Playgroud)

  • 只是:返回总和> 0; 无论如何,这可以作为返回1或0. (8认同)

Ste*_*mit 13

三元运算符处理表达式,但是return是一个声明.

return语句的语法是

return EXPR ;

三元条件运算符的语法是

expr1 ? expr2 : expr3

因此,您可以在语句中插入三元运算符的调用作为exprreturn.但是你不能将return语句作为三元运算符的expr2expr3插入.

三元表达式很像一个if语句,但它并不是if语句的确切替代.如果你想写

if(sum > 0)
     return 1;
else return 0;
Run Code Online (Sandbox Code Playgroud)

你可以把它写成一个真实的if陈述,但是你不能把它转换成使用? :而不用重新排列它,就像我们在这里看到的那样.


小智 9

因为return是陈述,而不是表达.你也做不到int a = return 1;.