Страницы

Поиск по вопросам

среда, 10 октября 2018 г.

Что возвращает рекурсивная функция если в ней нет оператора return

Что возвращает рекурсивная функция если в ней нет оператора 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; или игнорировать явно возвращаемое значение, если того требует платформа.

Комментариев нет:

Отправить комментарий