Можно ли использовать условный оператор следующим образом?

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

Я получаю синтаксическую ошибку.

2 ответа

Это не допускается, потому что 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 );
}


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

licensed under cc by-sa 3.0 with attribution.