En este grupo En todos

Grupo de Lenguaje C y C++



Diferencias entre Void main() e int main()

Miguel
Ingenieria de sistemas upeu
Escrito por Miguel Pazo Sanchez
el 21/05/2008

Hola a todos.... Solo una pregunta Cual es la diferencia entre un Void main() y un Int main(); estaba comentando con algunos amigos y profesores, pero no me quedo muy claro esto, asi que lo comento aqui esperando una ayuda, gracias por sus repuestas...

Aaron Sardi
Venezuela
Escrito por Aaron Sardi
el 22/05/2008

Bueno tengo tiempo que no programo en C, asi que quizas no sea un 100% acertada mi respuesta, pero practicamente si se la diferencia entre returnar un void y un int en una funcion.. El void mucha gente lo asocia a "NADA", pero en realidad es "CUALQUIER COSA", cualquier cosa que quede en los buffer de teclado de pantalla, ya sean caracteres, datos, etc, seran devueltos por tu funcion. Y si en cambio lo tienes de esta manera "int funcion(void)", veras que si en tu funcion haces alguna impresion por pantalla, te imprimira cadenas de caracteres y datos que quedan en los buffer.

siempre que puedas evita utilizar el void, personalmente lo utilize y utilizo muy poco.

Ra Lan
Argentina
Escrito por Ra Lan
el 23/05/2008

Hola,
comparto la idea de evitar usar void, y además, la mejor práctica es verificar siempre que es lo que devolvemos, y hacerlo de forma explícita.
Si la funcion debe retornar, por ej, un entero, eso nos obliga a verfiifcar que queremos retornar, ya que más adelante podriamos usar el valor devuelto por nuestra función. La idea de usar funciones "que no sean void" es justamente no dejar librado al azar (o al contenido del buffer) el resultado de nuestra función, sino que el resultado "signifique" algo a los efectos del programa (aunque ese algo sea "si es = a x no hago nada").
Saludos

Escrito por Gabriel Fernández Magán
el 04/06/2008

Bueno yo creo que no es que no se deba usar el tipo void, solo que depende de lo que quieras devolver, si no pretendes devolver nada o si lo que devuelves lo haces mediante algún parámetro en lugar de utilizar un return, puedes usar perfectamente el tipo void sin miedo a nada, lo que ocurre es que debemos saber diferenciar entre métodos ( no devuelven nada o devuelven varias cosas por parámetros ) y funciones ( devuelven un tipo de dato en concreto, y tambíen pueden devolver otros tipos de datos por parámetros ).

1Salu2.

Viridiana Salamanca
Certificadp quintana roo
Escrito por Viridiana Salamanca
el 05/06/2008

El void main es un procedimiento, el cual no devuelve ningun valor
ejemplo:

void InsertarNum(int A[])
{ //inserta numeros aleatoriamente

For(int i=0; i<20;i )
{
A[i]=random(50);
if(A[i] <= 0)
{
i--;
}
}
}

Viridiana Salamanca
Certificadp quintana roo
Escrito por Viridiana Salamanca
el 05/06/2008


En cambio el int main es donde ira el programa principal
ejemplo:

//Programa: Saber si un año es bisiesto
//Nombre: Salamanca Piña Viridiana
//fecha: 15 enero 2008

#include <iostream>
#include <stdio. H>

Int main() //----int main ---
{
int bisiesto;
printf("Ingrese el año a consultar ");
scanf("%d",&bisiesto);
if(bisiesto%4==0 && bisiesto%100! = 0) || bisiesto%400==0)
{
printf("Es bisiesto ");
}
else
{
printf("No es bisiesto ");
}
return 0;
}

Viridiana Salamanca
Certificadp quintana roo
Escrito por Viridiana Salamanca
el 05/06/2008


y si quieres hacer una funcion debes de utilizar cualquier tipo de dato, claro que este te debe d devolver algun valor
del mismo tipo de dato
ejemplo:


char *cifrado(char*clave, int n) //Tipo de dato: char
{
int i=0;

While(i < strlen(clave)){
if (clave[i]! =' ')
clave[i]=(tolower(clave[i])-64 n)%26) 64;
i ;
}
return clave; //regresa una variable del mismo tipo de la funcion
getch();
}

Escrito por Gabriel Fernández Magán
el 05/06/2008

Hola Viridiana, con respecto a tu apreciación sobre el int main(), solo decirte que el programa principal tambien puede ser un void main() o bool main() o lo que tu quieras, por lo menos en C mas mas ( pongo "mas", porque el símbolo de suma no se puede visualizar en este foro ) ya que el único requisito para que un procedimiento, sea el principal ( programa principal ) es que se llame main().

Miguel Pazo Sanchez
Ingenieria de sistemas upeu
Escrito por Miguel Pazo Sanchez
el 03/09/2008

HOLA A TODOS.... Gracias por sus aportes, ahora ya tengo mas claro la diferencia, GRACIAS....
a si disculpen por la demora.....

Ivan Uresti
Ingeniero en computación universidad a...
Escrito por Ivan Uresti
el 08/09/2008

Saludos Miguel...

Idealmente debes regresar un entero en la función main, el valor que regreses puede ser usado por otra aplicación que llame a la tuya como información del estado de terminación de tu programa. Si regresas cero, se entiende que tu programa termina normalmente, pero si termina por algún error debes regresar un valor diferente de cero.

Depende del compilador que uses puedes declarar main con void, con int o con cualquier otro tipo. Si usas gcc forzosamente deberás usar int como tipo de regreso en el main.

El tipo void no se asocia a "CUALQUIER COSA", en todo caso sería el apuntador a void (void *). Las funciones deben regresar lo que sea necesario, si no necesitan regresar un valor entonces usas void, para nada debes evitar usarlo, úsalo cuando sea necesario.

Angel Morocho
Ingenieria en sistemas universidad téc...
Escrito por Angel Morocho
el 15/09/2008
Hola pues lo que en mi opion respecta la diferencia entre void main() y int main() es que el primero retorna cualquier cosa que en ese momento que se ejecuta el compilador da, en cambio el segundo da la opcion que te pide una opcion de retorno el cual oviamente sera de tipo entero. Ademas de marcar la diferencia que el uno se utiliza en c y el segundo en c
Angel Morocho
Ingenieria en sistemas universidad téc...
Escrito por Angel Morocho
el 15/09/2008
Hola pues lo que en mi opion respecto a la diferencia entre void main() y int main() es que el primero retorna cualquier cosa al momento que se ejecuta el compilador, en cambio el segundo da la opcion que te pide una opcion de retorno el cual oviamente sera de tipo entero. Ademas de marcar la diferencia que el uno se utiliza en c y el segundo en c.
Angel Morocho
Ingenieria en sistemas universidad téc...
Escrito por Angel Morocho
el 15/09/2008
Hola pues lo que en mi opion respecto a la diferencia entre void main() y int main() es que el primero retorna cualquier cosa al momento que se ejecuta el compilador, en cambio el segundo da la opcion que te pide una opcion de retorno el cual oviamente sera de tipo entero. Ademas de marcar la diferencia que el uno se utiliza en c y el segundo en c mas mas.