¿Está bien escribir void main() o main() en C/C++?

En C++, el tipo de devolución predeterminado de main es nulo, es decir, main() no devolverá nada. Pero, en C, el tipo de devolución predeterminado de main es int, es decir, main() devolverá un valor entero de forma predeterminada.

En C, void main() no tiene un uso definido (legítimo), y a veces puede arrojar resultados basura o un error. Sin embargo, main() se usa para denotar la función principal que no toma argumentos y devuelve un tipo de datos entero.

La definición no es y nunca ha sido C++, ni siquiera ha sido C. Consulte el estándar ISO C++ 3.6.1[2] o el estándar ISO C 5.1.2.2.1. para más.

void main(){
// Body
}

 Una implementación conforme acepta los formatos que se indican a continuación:

int main(){ 
// Body
}

y

int main(int argc, char* argv[]){
// Body
}

Una implementación conforme puede proporcionar más versiones de main(), pero todas deben tener un tipo de retorno int. El int devuelto por main() es una forma de que un programa devuelva un valor al «sistema» que lo invoca. En los sistemas que no brindan tal facilidad, el valor de retorno se ignora, pero eso no hace que «void main()» sea legal C++ o legal C. 

Nota: Incluso si su compilador acepta void main() , evítelo o corra el riesgo de que los programadores de C y C++ lo consideren ignorante. En C++, main() no necesita contener una declaración de retorno explícita. En ese caso, el valor devuelto es 0, lo que significa una ejecución exitosa.

Ejemplo:

CPP

// CPP Program to demonstrate main() with
// return type
#include <iostream>
using namespace std;
 
// Driver Code
int main()
{
    cout<< "This program returns the integer value 0\n";
}
Producción

This program returns the integer value 0

NOTA: Ni ISO C++ ni C99 le permiten dejar el tipo fuera de una declaración. Es decir, a diferencia de C89 y ARM C++, no se asume  int cuando falta un tipo en una declaración.

Como consecuencia,

C++

#include <iostream>
using namespace std;
 
main() // default return type of main in c++ is int
{
    // Body
      cout<<"This will return integer value.";
   
      return 0;
}

El código anterior no tiene ningún error. Si escribe toda la función main() sin errores sin una declaración de devolución al final, el compilador agrega automáticamente una declaración de devolución con el tipo de datos adecuado al final del programa. 

Para resumir lo anterior, nunca es una buena idea usar void main() o simplemente main() ya que no confirma los estándares. Sin embargo, algunos compiladores pueden permitirlo.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *