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

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

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

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

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

 return sum > 0 ? 1 : 0; 

或者DrDipShit指出:

 return sum > 0; 

三元运算符处理表达式,但return是一个语句。

return语句的语法是

return expr ;

三元条件运算符的语法是

expr1 ? expr2 : expr3

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

三元表达式很像if语句,但它不是if语句的确切替换。 如果你想写

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

你可以把它写成一个真正的if语句,但你不能将其转换为使用? : ? :正如我们在这里看到的那样,没有重新排列它。

因为return是一个语句,而不是表达式。 你不能做int a = return 1; 无论是。

请参阅三元运算符的语法

 expr1 ? expr2: expr3; 

其中expr1expr2expr3是表达式;

运算符?:如下工作如果expr1为真,则首先计算expr1否则计算expr2 ,否则计算expr3

因此在表达式中, return语句不能用于C语言。

return语句用于从function返回,不能在内部使用三元运算符。

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

你可以做到这一点

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

三元运算符的语法如下

 expr1 ? expr2 : expr3; 

其中expr1expr2expr3是表达式, return是语句,而不是表达式。

只需查看语法,您就应该知道语句不能在表达式中使用。 您可以通过以下方式获得您想要的: return sum > 0 ? 1 : 0; return sum > 0 ? 1 : 0;