我有以下代码
mystack.empty() ? return 1 : return 0;
从语法的角度看起来很完美,但每当我尝试运行它时都会抛出一个错误
[错误]预期':'在'return'之前
和
[错误]预期在'return'之前的primary-expression
三元运算符不能与return语句一起使用,或者代码有问题吗?我猜这段代码是不言自明的。
谢谢。
答案 0 :(得分:7)
语法无效。 Ternary conditional operator要求其操作数为expressions,但return 1
和return 0
不是。{/ p>
另一方面,return statement可以与(可选)表达式一起使用,例如三元条件运算符:
attr(可选)返回表达式(可选); (1)
所以你可以/应该把它写成
return mystack.empty() ? 1 : 0;
答案 1 :(得分:1)
return是一个语句,规则是你不能在表达式中调用语句。
尝试重新格式化代码并使用以下(假设该函数返回一个布尔值)
return mystack.empty()? 1:0;