为什么三元运算符不能在我的代码中工作?

时间:2016-12-17 10:35:55

标签: c++ if-statement return language-lawyer ternary-operator

我有以下代码

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

从语法的角度看起来很完美,但每当我尝试运行它时都会抛出一个错误

  

[错误]预期':'在'return'之前

  

[错误]预期在'return'之前的primary-expression

三元运算符不能与return语句一起使用,或者代码有问题吗?我猜这段代码是不言自明的。

谢谢。

2 个答案:

答案 0 :(得分:7)

语法无效。 Ternary conditional operator要求其操作数为expressions,但return 1return 0不是。{/ p>

另一方面,return statement可以与(可选)表达式一起使用,例如三元条件运算符:

  

attr(可选)返回表达式(可选); (1)

所以你可以/应该把它写成

return mystack.empty() ? 1 : 0;

答案 1 :(得分:1)

return是一个语句,规则是你不能在表达式中调用语句。

尝试重新格式化代码并使用以下(假设该函数返回一个布尔值)

return  mystack.empty()? 1:0;