2016-12-17 36 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; 
相关问题