Hola.
Todas las aplicaciones tienen que devolver un código de error cuando finalizan. El código 0 significa que la aplicación ha terminado sin problemas. El resto de códigos sirven para indicar algún problema (en MS-DOS se podía ver el código de retorno de la última aplicación ejecutada con errorlevel en un BAT). Si el main es declarado retornando void en vez de int, se asumirá que retorna siempre 0 (el compilador se encarga de insertar el código necesario). Puedes devolver otro valor mediante la función exit.
Un saludo.
Ruben3d