Можно создать дубликат:
Why can you return from a non-void function without returning a value without producing a compiler error?Почему этот компилятор C++?
Почему gcc 4.6.1
собрать следующую функцию без оператора возврата?
uint32_t& siof_solution() {
static uint32_t example = (uint32_t) 7; // Doesn't really matter
// return example;
}
Он возвращает 1
. Я видел это.
Эй, это дает вам предупреждение, этого недостаточно? Был переключатель, чтобы остановить компиляцию при предупреждении ... – Griwes
Я видел аналогичные случаи с компилятором Visual C++. Если функция была объявлена с возвращаемым значением, я забыл поставить оператор return и как-то скомпилировал его и вернул значение! В моем случае возвращаемым значением был мусор, который был интерпретирован как истинный. Не знаю, почему. – Nerdtron
** Всегда ** компиляция с включенными предупреждениями. Не отправляйте сообщения, пока вы не попытались скомпилировать все предупреждения. –