На собеседовании тут встретил сеньора-помидора, который говорил, что код не скомпилируется, если не написать return 0 в конце. Думал, что все уже знают эту особенность, но раз нет - придется рассказать. Правда это довольно коротко будет.
В С++ разрешено не указывать возвращаемое значение для функции main. Но только для нее! Это единственное исключение.
Однако процессу требуется какой-то код возврата по завершению работы, это требование ОС. Поэтому, если исполнение дошло до конца main и ничего плохого не произошло - подразумевается, что возвращается 0. Компилятор также добавляет соответствующую инструкцию в асм.
На счет сишки точно не знаю, но вроде в С99 можно было опускать инструкцию возврата.
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
}
Поэтому этот код абсолютно валидный и не противоречит стандарту.
Так что все в порядке, город может спать спокойно без return.
Sleep well. Stay cool.
#cppcore