我可以像这样使用条件运算符吗?

时间:2013-12-14 05:37:57

标签: c++ conditional operator-keyword

!isalpha( str[first] )  ? ( return isPalindrome( str, ++first, last ) ) : return isPalindrome( str, first, --last ) ;

我收到语法错误。

2 个答案:

答案 0 :(得分:6)

这是不允许的,因为表达式中不允许return;它只允许在声明的顶层。 (任何表达式都可以用作语句,但反之则不然。)你可以这样写:

return !isalpha(str[first])
           ? isPalindrome(str, ++first, last)
           : isPalindrome(str, first, --last);

或者这个:

if (!isalpha( str[first] )) {
    return isPalindrome( str, ++first, last );
} else {
    return isPalindrome( str, first, --last );
}

答案 1 :(得分:4)

return !isalpha(str[first]) ? 
       isPalindrome(str, ++first, last) : 
       isPalindrome(str, first, --last);