2010-08-25 60 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;