¿ Has probado a lanzar el ejecutable desde Windows ?, no creo que se comporte igual si lo lanzas directamente desde una ventana DOS. Esto me suena de mis primeras prácticas con Visual Studio al crear aplicaciones de consola, si no le ponía un punto de ruptura haciendo Debug o un getchar, el programa terminaba sin poder ver lo que había sacado por pantalla.
El return 0, puede ser que dependiendo del compilador, te de error en tiempo de ejecución si no lo pones al salir del main en una aplicación de consola.
Presupongo que estás haciendo las prácticas en un PC, porque a un microcontrolador no le va a afectar, aunque tampoco tiene sentido dejar que el programa escape del main, excepto en prácticas de PC con programas de consola.