Как программы C ++ получают свое возвращаемое значение, если возвращаемое значение не указано в функции?

Недавно я написал сообщение:
Странная ошибка в программе C ++: программа удаления разрывов распечатки

.. .в котором я пытался решить, казалось бы, непонятную проблему, в которой удаление оператора cout нарушило бы мою программу.

Как оказалось, моя проблема заключалась в том, что я забыл вернуть свой истинный / ложный флаг успеха, который я позже использовал для логики.

Но, по-видимому, ЧТО-ТО возвращалось, и это что-то всегда было правдой, если я оставил этот cout внутри, но, казалось бы, «волшебным образом» стало бы ложным, когда я его вынул.

Мой вопрос для всех вас:
Что определяет, что функция C ++ возвращает, если внутри функции не выполняется команда возврата? Есть ли в этом какая-то логика?

Очевидно, что забывать свой возвращаемый тип - плохая идея. В данном случае, однако, во многом это было связано с характером моей программы - быстрой хакерской работой. Позже я решил, что не стоит прилагать усилия для включения реализации алгоритма для определения успеха / неудачи вызова функции, но случайно оставил код, зависящий от возврата.

Как ни странно, g ++ не выдал мне предупреждений или ошибок при компиляции исполняемого файла следующим образом:

g++ main.cc -g -o it_util

Моя версия: g ++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)

Опять же, чтобы избавить других от разочарования в будущем на случай, если они совершат ту же глупую ошибку и столкнутся с таким же, казалось бы, неустойчивым поведением, может ли кто-нибудь пролить свет на то, откуда функция без возврата получает свое возвращаемое значение ??

Спасибо !!

5
задан Community 23 May 2017 в 12:13
поделиться