2010-08-25 62 views
13

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

+17

'return sum> 0有什么问题? 1:0;'? – 2010-08-25 13:42:45

+2

或者就此而言,if(sum> 0)返回1;否则返回0;' – 2010-08-25 13:46:09

+1

感谢所有的答复。返回和> 0没有问题? 1:0;我只是想知道为什么我们不能以上述方式在问题中使用它。 – nullpointerexception 2010-08-25 13:46:55

回答

26

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

25

因为三元操作是一个表达式,所以不能在表达式中使用语句。

尽管你可以很容易地使用三元运算符。

return sum > 0 ? 1 : 0; 

或者作为DrDipShit指出:

return sum > 0; 
+8

只是:return sum> 0;无论如何,它返回1或0。 – 2010-08-25 13:47:59

+0

@DrDipShit:非常真实,在这种情况下,它的工作原理也一样:) – Wolph 2010-08-25 15:03:25

9

因为return是一个语句,不是表达式。你也不能这样做int a = return 1;

2

参见三元操作符的语法是

expr1 ? expr2: expr3; 

其中expr1expr2expr3是表达式;

?:工作原理如下 expr1首先计算如果这是真的expr2进行评估,否则expr3评估操作。

因此在表达式中返回声明不能用于C语言。

+1

-1,并没有真正回答这个问题。也不是旨在为您的网站吸引流量 – Hasturkun 2010-08-25 16:43:36

0

仅仅通过查看语法,您应该知道语句不能用在表达式中。 你想要什么可以通过这样做达到:return sum > 0 ? 1 : 0;