条件运算符中的返回值

时间:2011-08-12 20:46:48

标签: c++ c conditional-operator

我试图通过使用条件运算符来根据条件返回值true或false,但是我收到了错误。这是我的代码,

bool isEmpty()
{
    int listSize = Node::size();
    listSize > 0 ? return (true) : return (false);
    return false;
}

这是错误,

error C2107: illegal index, indirection not allowed

现在我被困在这里。我不明白这一点。我认为它应该是正确的。请指导我。感谢

3 个答案:

答案 0 :(得分:13)

您只能将表达式*作为三元条件语句的操作数,而不是语句。通常的说法是:

return listSize > 0 ? true : false;

甚至更好,

return listSize > 0;

甚至更好,

bool isEmpty() { return Node::size() > 0; }


*)由于您将此标记为C和C ++,因此请知道两种语言中允许的表达式之间存在subtle difference

答案 1 :(得分:5)

三元运算符(?:)的设计并非如此。您有语法错误。

请改为尝试:

return (listSize > 0);

答案 2 :(得分:2)

除非你有更深层次的理由这样做,否则我应该return (listSize > 0);