¿Qué es int main() en C++?

Respuesta corta: int main() es el punto de entrada de todo programa C++ — la función que tu sistema operativo llama para empezar a ejecutar tu código. El int es el estado de salida que devuelve cuando el programa termina.

Cuando ejecutas un programa, el sistema operativo no «simplemente corre tu archivo». Lo carga, prepara el terreno y llama a una función que debe llamarse exactamente main — en minúsculas, letra por letra. Lo que pongas en main es lo primero que se ejecuta. Cuando main termina, el programa sale, y el entero que devuelves se convierte en el estado de salida del proceso.

El programa real más pequeño

Ejecútalo y mira la línea bajo la salida — el editor te reporta el código de salida:

#include <iostream>
using namespace std;

int main() {
    cout << "The program is running." << endl;
    return 0;
}

Qué hace de verdad el valor de retorno

El número que devuelves se lo entrega al sistema operativo. Por convención, 0 significa «todo bien» y cualquier otro valor señala un problema — cuál, lo eliges tú. Las herramientas lo usan: sistemas de build, corredores de tests y scripts de shell revisan el código de salida para decidir si el paso anterior funcionó.

#include <iostream>
using namespace std;

int main() {
    cout << "Pretending something went wrong..." << endl;
    return 42;
}

En tu propia computadora puedes ver el mismo número: ejecuta el programa compilado y escribe echo $? (Linux/Mac) o echo %ERRORLEVEL% (Windows cmd) — la consola imprime el código que devolvió main.

Las dos firmas estándar

El estándar de C++ admite exactamente dos formas:

int main()                        // sin argumentos de línea de comandos
int main(int argc, char* argv[])  // con argumentos de línea de comandos

¿Hay que escribir return 0;?

No — main es la única función de C++ que devuelve 0 implícitamente si llegas al final. Muchas guías de estilo lo escriben igual; ambas formas son correctas. En todas las demás funciones, olvidar el return en una función no-void es comportamiento indefinido — no cojas el vicio aquí.

Errores clásicos de principiante

Seguimientos típicos en entrevistas

  1. «¿Puede main llamarse a sí mismo?» Técnicamente sí (recursión en main es legal, aunque rara); el programa reinicia su lógica hasta reventar la pila.
  2. «¿Se puede sobrecargar main?» No — el estándar la fija a las dos formas de arriba.
  3. «¿A dónde va el valor de retorno?» Al estado de salida del proceso, visible para el proceso padre — consolas, herramientas de build, frameworks de test.
  4. «¿Se ejecuta algo antes de main?» Sí: los constructores de objetos globales/estáticos. Pregunta favorita para separar a quien leyó C++ de quien lo depuró.

Práctica en el editor

  1. Escribe un main que imprima tu nombre y devuelva 7; confirma el código de salida en el panel.
  2. Rómpelo a propósito: renombra main a Main y lee el error (en un compilador real es error del enlazador, no del compilador — conviene conocer la diferencia).
  3. Añade otra función, llámala desde main y devuelve su resultado.

Siguiente: dentro de main casi siempre hay bucles — mira for vs while en C++ y la lección del Hola Mundo.