C 中的三元运算符和 Return
为什么我们不能在 C 中的三元运算符中使用 return 关键字,如下所示:
sum > 0 ? return 1 : return 0;
Why can't we use return keyword inside ternary operators in C, like this:
sum > 0 ? return 1 : return 0;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
return
是一个语句。不能以这种方式在表达式内部使用语句。return
is a statement. Statements cannot be used inside expressions in that manner.因为三元运算是一个表达式,并且不能在表达式中使用语句。
不过,您可以轻松地在返回中使用三元运算符。
或者正如 DrDipShit 指出的那样:
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.
Or as DrDipShit pointed out:
三元运算符处理表达式,但
return
是一个语句。return
语句的语法为return
expr;
三元条件运算符的语法为
expr1
?
expr2:
expr3因此,您可以插入三元运算符的调用作为 <
return
语句中的 em>expr。但是您不能将return
语句插入为三元运算符的 expr2 或 expr3。三元表达式的行为很像
if
语句,但它并不是if
语句的精确替代。如果要写可以写成真正的
if
语句,但是不能转换为using? :
无需稍微重新排列它,正如我们在这里所看到的。The ternary operator deals in expressions, but
return
is a statement.The syntax of the
return
statement isreturn
expr;
The syntax of the ternary conditional operator is
expr1
?
expr2:
expr3So you can plug in an invocation of the ternary operator as the expr in a
return
statement. But you cannot plug in areturn
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 anif
statement. If you want to writeyou 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.因为
return
是一个语句,而不是一个表达式。您也不能执行int a = return 1;
。Because
return
is a statement, not an expression. You can't doint a = return 1;
either.请参阅三元运算符的语法,
其中
expr1
、expr2
、expr3
是表达式;运算符
?:
的工作原理如下如果为 true,则首先评估
expr1
,然后评估expr2
,否则评估expr3
。因此,在表达式中,return 语句不能在 C 语言中使用。
See the syntax of a ternary operator is
where
expr1
,expr2
,expr3
are expressions;The operator
?:
works as followsexpr1
is evaluated first if it is trueexpr2
is evaluated otherwiseexpr3
is evaluated.hence in expressions the return statement can not be used in C-language.
return
语句用于从函数
返回,不能在三元运算符内部使用。你可以像
三元运算符的语法一样,
其中
expr1
,expr2
,expr3
是表达式,return
是一个声明,而不是一个表达式。The
return
statement is used for returning from afunction
, you can't use inside ternary operator.you can make it like
The syntax of a ternary operator follows as
where
expr1
,expr2
,expr3
are expressions andreturn
is a statement, not an expression.您可以使用 gcc/clang 的语句表达式功能。
结果是:
You can use gcc's/clang's statement expressions feature.
Results are:
只要看一下语法就应该知道语句不能在表达式中使用。
您想要的可以通过执行以下操作来实现:
return sum > 0 ? 1:0;
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;