Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: apoeti en 9 Septiembre 2012, 21:54 pm



Título: [Duda] Valor de retorno main
Publicado por: apoeti en 9 Septiembre 2012, 21:54 pm
Hola.
Esta vez os voy a preguntar sobre el valor de retorno de main(). Me he estado informando y he visto que sirve para indicar al sistema operativo si el programa ha finalizado bien (0) o mal (cualquier otro valor). He visto que según el valor devuelve al terminal un mensaje de error o algo así, dependiendo del S.O.
Bueno, no he encontrado mucha información en Internet acerca de la utilidad del valor de retorno. Lo que quiero es que me expliquéis su utilidad, a ser posible, con algún ejemplo.

Saludos.


Título: Re: [Duda] Valor de retorno main
Publicado por: xiruko en 9 Septiembre 2012, 22:14 pm
el valor de retorno no sirve para nada mas que para saber como ha acabado tu programa. como has dicho, si acaba bien suele devolver un 0, por eso lo de "return 0;" al final. pero tambien puedes usarlo para saber que error ha habido en tu programa. por ejemplo:

Código
  1. int main(int argc, char** argv) {
  2.  
  3. FILE *f;
  4.  
  5. if (argc != 3) return 1;
  6.  
  7. if (!f=fopen("archivo.txt", "r")) return 2;
  8.  
  9.        //....
  10.  

en este caso, si el numero de argumentos pasados al programa no es correcto y el programa se cierra por este error, el programa devolvera el valor 1. luego si hay un error abriendo "archivo.txt", el programa devolvera 2 y se cerrara. y asi con los errores que tu quieras. asi que no es mas que ponerle etiquetas a los distintos errores que puedan suceder para asi poder arreglarlo de manera rapida.

para ver valor de retorno de tu programa, en windows no se como sera, pero en linux y en mac no tienes mas que hacer uso de la variable $? en la terminal de esta manera:

Código:
echo $?

y te dira el valor de retorno del ultimo programa ejecutado.

un saludo!


Título: Re: [Duda] Valor de retorno main
Publicado por: twins en 10 Septiembre 2012, 01:22 am
Bien otra explicacion como sabemos  main es una funcion
int main(void){
return(0);
}
es de tipo entero por lo tanto debe retornar un valor, no necesita parametros por eso
ponemos void "vacio" en informatica el valor 0 significa falso y cualquier otro valor significa verdadero al retornar 0 el programa es como si le dijera al sistema operativo que el programa termino correctamente su ejecucion, si en cualquier parte del codigo pones return(0) el programa finaliza.


Título: Re: [Duda] Valor de retorno main
Publicado por: apoeti en 12 Septiembre 2012, 16:16 pm
Vamos, que el valor de retorno de main() funciona como en el resto de funciones que puede crear el programador. Gracias, ya lo entiendo.