我有下面这段代码为什么三元运算符不能在我的代码中工作?
mystack.empty() ? return 1 : return 0;
看起来完美但从语法点,但每当我尝试运行它抛出一个错误说
[错误]预期“:”之前'返回'
和
[错误]预期PR '返回'之前的imary表达式
三元运算符不能使用return语句,或者代码有问题吗?我猜代码是自我解释的。
谢谢。
我有下面这段代码为什么三元运算符不能在我的代码中工作?
mystack.empty() ? return 1 : return 0;
看起来完美但从语法点,但每当我尝试运行它抛出一个错误说
[错误]预期“:”之前'返回'
和
[错误]预期PR '返回'之前的imary表达式
三元运算符不能使用return语句,或者代码有问题吗?我猜代码是自我解释的。
谢谢。
语法无效。 Ternary conditional operator要求其操作数为expressions,但是return 1
和return 0
不是。
在另一方面,return statement可与(可选的)的表达中使用,诸如三元条件算子:
ATTR(可选)返回表达式(可选); (1)
所以,你可以/应该写为
return mystack.empty() ? 1 : 0;
从技术上讲,'return 1'不是一个语句('return 1;'would be) –
@ M.M那么它只是一个无效的表示?既不是陈述也不是表达。 – songyuanyao
是的,它不符合条件运算符的语法,因为它不是一个表达式(为了这个目的,它不管它是什么,如果有的话) –
回报是一个声明,规则是,你不能调用语句转换成一个表达式。
尝试重新格式化代码,并使用以下(假设函数返回一个布尔值)
return mystack.empty()? 1:0;
_which看起来与view_的语法点完美 - 不,它不需要 –
哪种语言是什么? 'return'通常是一个陈述,而三元运算符需要两个表达式,例如'return(mystack.empty()?1:0);'。 – Lee
@EdHeal这里有什么问题? – Anoneemus