Как проги C ++ получают свое возвращаемое значение, если в функции не указано возвращаемое значение?
Я недавно написал пост:
Странная ошибка в программе на C ++: удаление программы для прерывания печати
... в котором я пытался решить, казалось бы, непонятную проблему, в которой удаление оператора cout сломало бы мою программу.
Как выяснилось, моя проблема заключалась в том, что я забыл вернуть свой флаг истинного / ложного успеха, который позже использовал для логики.
Но, видимо, ЧТО-ТО возвращалось, и что-то всегда было правдой, если бы я оставил этот кут, но, казалось бы, «волшебным образом» стало бы ложным, когда я его вынул.
Мой вопрос к вам:
Что определяет, что функция c ++ возвращает, когда в функции не выполняется команда return? Есть ли в этом логика?
Очевидно, что забывать свой тип возврата - плохая идея. В этом случае, тем не менее, это было во многом из-за характера моей программы - быстрой взломать работу. Позже я решил, что не стоит тратить усилия на реализацию алгоритма, определяющего успех / неудачу вызова функции, - но случайно оставил код, зависящий от возврата.
Удивительно g ++ не дал мне никаких предупреждений или ошибок при компиляции исполняемого файла следующим образом:
g++ main.cc -g -o it_util
Моя версия: g ++ (GCC)4.1.2 20080704 (Red Hat 4.1.2-44)
Опять же, чтобы спасти других от разочарования в будущем, если они совершат ту же глупую ошибку и столкнутся с тем же, казалось бы, ошибочным поведением, может ли кто-нибудь пролить свет на то, откуда функция без возврата получает свое возвращаемое значение ??
Спасибо!!