11 respuestas
7 mensajes

Este tema es antiguo y puede contener información obsoleta. Abre un nuevo tema para publicar tu mensaje.
  • Cerrado

    #1462651

    void main, int main...¿cuando se usan?

    Hola foreros.

    Sé que a muchos esta pregunta os sonará a coña, pero estoy haciendo unas practicas para programación y me gustaría deshacerme del warning que me da al compilar.

    En clase, en los pdf's que cuelgan en el moodle de la asignatura y en los ejemplos que tenemos usa al principio del programa "int main" o "void main", y al final pone un return 0.

    Se que eso soluciona el warning, pero no se cuando debo usar cada uno o cuando debo dejar el main() solo o cuando no hay que poner return 0, y encuentro la explicación de estos comandos por ningún sitio.

    Alguien podría echarme una mano con este tema?

    Por cierto, estoy programando en C.

    Gracias y un saludo.

    • #1462654

      Cerrado

      claro que es C... de todos modos.. menudas practicas si…

      claro que es C... de todos modos.. menudas practicas si andamos con el main.

      En las bases el uso de main como funcion que retorne un valor no suele ser utilizado.

      Mas bien por que diseñas un programa Simple. y creas las funciones ( despues de saber TODOS los comandos ) dentro de un fichero plano... de ese modo el PROGRAMA principal reside en MAIN.. y por tanto se suele indicar "void" como queriendo decir que no retorna ninguna valor util...

      mire ejemplos en pag de programacion... el int main u otro formato... se usa cuando SU programa VA a devolver alguna informacion, cuando es usado "desde fuera"...

      aunque talvez en procesos recursivos tambien tenga su utilidad..

      no ha visto karma ninguna zona en BA.st dedicada a la programacion. puedes probar en Linux... pero es una pregunta algo rara para alguien que "ya este programando en C"...

      saludos.

      Hay un par de libros buenos en C... pero los tengo "en el trastero"... saludos....

      PD: por cierto alguien te dira que este no es el subforo adecuado.. pero no les hagas CASOS son unos maniaticos del ORDEN y las faltas:

      saludos ;-)

    • #1462669

      Cerrado

      Efectivamente, como te dice Karma un main debe ser siempre…

      Efectivamente, como te dice Karma un main debe ser siempre VOID, excepto si debe devolver algun valor al SO o a otra aplicacion.

      Existen muchos y muy buenos manuales de C, pero de todos ellos a mi el que mas me gusto fue "La biblia del C", de Mcgraw Hill, por lo completo que es, aunque como pega a veces es demasiado engorroso.

      Un saludo

    • #1462699

      Cerrado

      A ver.... si puedo aclarartelo un poco, aunque ya veo que ya…

      A ver.... si puedo aclarartelo un poco, aunque ya veo que ya te han dado la solución ;-).

      void main(), se utiliza cuando la aplicación no va a devolver ningún valor al sistema operativo, o a otra aplicación que haya ejecutado ese programa. Evidentemente, y como indica el indicador de tipo de dato devuelto por la función, es void, por lo que si utilizas un return dentro de void, el compilador te dará un warning ya que interpreta muy sabiamente que estás intentando compilar una función void, que no debería devolver nada, y detecta que hay un código de salida en la función (el valor 0 que sigue a return).

      Si la función debe devolver un valor al sistema operativo, o a otra aplicación, entonces, debes utilizar un indicador de tipo distinto de void (tipo nulo, en C). Perfectamente puedes usar int (para devolver un entero, que es lo más habitual), aunque puedes usar un DWORD (para devolver un entero sin signo de 32 bits), un short int (para números enteros con signo de 16 bits), etc.

      En definitiva: Si la función principal main, debe devolver un valor a la salida del programa, debes utilizar int (u otro tipo de datos no nulo). Si la función no debe devolver nada, entonces utiliza void (tipo nulo). Si debe devolver algo, utiliza return, y si no debe devolver nada, no lo uses (directamente llega al símbolo } que es el cierre de función en C, y por lo tanto, si se llega al final de la función main, el programa terminará su ejecución).

      Un saludo :-), y espero que hayas entendido cuando hay que usar void y cuando hay que usar int, en la función main de C ;-)

    • #1462785

      Cerrado

      Muchas gracias a todos por las respuestas. Karma, hemos…

      Muchas gracias a todos por las respuestas.

      Karma, hemos empezado desde 0 con C, ya llevo unos 20 programas hechos, y todos con la función main() a secas y sin return, simplemente quería saber para qué servía, ya que en los manuales que he visto suelen usar int main() .. return 0 (por lo que veo, de forma innecesaria, incluso lo he visto en los "Hola mundo"), pero nunca decían por qué lo ponían.

      Por ahora los programas que estamos haciendo hacen cálculos sencillos con estructuras condicionales, y no envían ningún dato a ningún otro programa, por lo que debería usar void main, o main a secas.

      Por cierto, he puesto el hilo en este subforo porque no hay ninguno destinado a programación, y ya que este tiene que ver con el tema... pues aquí ha caído.

      Pues eso, que gracias a todos y un saludo.

      Edito: se me olvidaba, el warning que dije antes que me daba era por no dejar una línea en blanco al final del programa.

      • #1464979

        Cerrado

        no problem ALGUNOS compiladores NO le permitiran indicar…

        no problem

        ALGUNOS compiladores NO le permitiran indicar "MAIN" a secas... pidiendo identificar que devuelve el programa ANTE una salida inesperada o simplemente al terminar.

        "el C" puro es un poco lata al principio... hay compiladores en entornos win, mas sencillos para empezar.

        PD: viva C ¡ abajo el C++. 8-)