,
- это оператор, аналогичный +
или <<
, так что вы можете свободно использовать его почти везде, где ожидается выражение.Исключением являются контексты, в которых ожидается запятая с другим значением, например, при вызове функции.В таком контексте вам необходимо устранить неоднозначность запятой, добавив дополнительный набор символов:
foo((b,c)); // call foo with a single argument
Показанное вами утверждение эквивалентно:
// return ((isNumber(entry) && value >= 0) ? i : (cout << "Enter valid amount: ", validateEntry())
if(isNumber(entry) && value >= 0) {
return i;
} else {
cout << "Enter valid amount: ";
return validateEntry();
}
Это просто «умный»способ условного выполнения cout << "Enter valid amount: "
перед вызовом validateEntry()
при использовании как можно меньшего количества строк.Конечно, вся функция - это просто «умный» способ многократно запрашивать ввод, пока он не получит действительный ввод.ИМО цикл был бы лучше, чем рекурсия здесь.