2016-12-17 90 views
2

我有下面這段代碼爲什麼三元運算符不能在我的代碼中工作?

mystack.empty() ? return 1 : return 0; 

看起來完美但從語法點,但每當我嘗試運行它拋出一個錯誤說

[錯誤]預期「:」之前'返回'

[錯誤]預期PR '返回'之前的imary表達式

三元運算符不能使用return語句,或者代碼有問題嗎?我猜代碼是自我解釋的。

謝謝。

+3

_which看起來與view_的語法點完美 - 不,它不需要 –

+4

哪種語言是什麼? 'return'通常是一個陳述,而三元運算符需要兩個表達式,例如'return(mystack.empty()?1:0);'。 – Lee

+0

@EdHeal這裏有什麼問題? – Anoneemus

回答

7

語法無效。 Ternary conditional operator要求其操作數爲expressions,但是return 1return 0不是。

在另一方面,return statement可與(可選的)的表達中使用,諸如三元條件算子:

ATTR(可選)返回表達式(可選); (1)

所以,你可以/應該寫爲

return mystack.empty() ? 1 : 0; 
+0

從技術上講,'return 1'不是一個語句('return 1;'would be) –

+0

@ M.M那麼它只是一個無效的表示?既不是陳述也不是表達。 – songyuanyao

+1

是的,它不符合條件運算符的語法,因爲它不是一個表達式(爲了這個目的,它不管它是什麼,如果有的話) –

1

回報是一個聲明,規則是,你不能調用語句轉換成一個表達式。

嘗試重新格式化代碼,並使用以下(假設函數返回一個布爾值)

return mystack.empty()? 1:0; 
相關問題