Jeśli chodzi o C++, to nawet gdy nie dodass, kompilator doda to sam. Wartość ta jest ta jest zwracana do systemu. Gdy działanie programu się skończy w zmiennej errorlevel będzie kod wyjscia (chyba tak się to nazywa, exit code) ostatniego programu. Zobacz to sobie.
C:/Users/Abc/Desktop> a.exe
C:/Users/Abc/Desktop> echo %errorlevel%
W C, gdzie trzeba return X dać nie wiem co się stanie jeśli nie dasz. Zapewne errorem kompilatora.
Zazwyczaj wartość 0 oznacza poprawne działanie programu, a każda inna błąd.