Что возвращает рекурсивная функция если в ней нет оператора return в отдельном предложении.
int Recur(int i = 0)
{
if (i != 3) return Recur(++i);
}
Ответ
Если функция, возвращаемый тип который отличен от void, за исключением функции main, заканчивается без выражения return, то получается Неопределённое Поведение:
9.6.3 The return statement [stmt.return]
Flowing off the end of a constructor, a destructor, or a function with a cv void return type is equivalent to a return with no operand. Otherwise, flowing off the end of a function other than main (6.6.1) results in undefined behavior.
Исключение для main сделано специально. Эта функция может неявно возвращать 0 даже при отсутствии return 0; или игнорировать явно возвращаемое значение, если того требует платформа.
Комментариев нет:
Отправить комментарий