c++ - 为什么三元运算符在我的代码中不起作用?

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

我有如下一段代码

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

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

[Error] expected ':' before 'return'

[Error] expected primary-expression before 'return'

三元运算符是否不能与 return 语句一起使用,还是代码有问题?我想代码是不言自明的。

谢谢。

最佳答案

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

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

attr(optional) return expression(optional) ; (1)

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

return mystack.empty() ? 1 : 0;

关于c++ - 为什么三元运算符在我的代码中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41197668/

相关文章:

php - Laravel 5.2 不返回任何响应作为 JSON

c - 在主函数中返回变量

c++ - 将设置/获取请求映射到 C++ 类/结构更改中

c++ - 数组声明在 C++ 中如何工作?

c++ - 调整列宽 QTableWidget

javascript - 即使条件成立,else if 语句之一也不会执行

java - Android Bundle 与字符串的比较

C++11:用于调用类型的默认构造函数的可变参数 lambda 模板

java - 使循环仅运行一个 if 语句而不是多个 if 语句时出现问题

java - 返回整数而不是 Scanner.NextInt() 时出错