Foros del Web » Programación para mayores de 30 ;) » Programación General »

uso de void en programas C ... pregunta simple :)

Estas en el tema de uso de void en programas C ... pregunta simple :) en el foro de Programación General en Foros del Web. Una pregunta un poco boba, pero he visto tutoriales donde se usa void como una forma de reemplazar return .... o que se yo. Alguien ...
  #1 (permalink)  
Antiguo 07/08/2005, 21:49
Avatar de webbeginner  
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 19 años, 5 meses
Puntos: 2
uso de void en programas C ... pregunta simple :)

Una pregunta un poco boba, pero he visto tutoriales donde se
usa void como una forma de reemplazar return .... o que se yo.

Alguien me podria explicar la diferencia o cuando usar void, como
viene en los pequeños ejemplos que les pongo a continuación

Código:
#include <stdio.h>
void main()
{
     printf("Hola");
     }

Código:
#include <stdio.h>
main()
{
     printf("Hola");
     return 0;
}
Gracias , saludos
__________________
************************
"La bondad es simple; la maldad, múltiple"
  #2 (permalink)  
Antiguo 07/08/2005, 21:55
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
En C cuando no le pones tipo de valor a la funcion asi:

Código:
main() {
//...
return 0;
}
implicitamente el compilador lo toma como int, por eso tienes que regresar un valor.

Esto ya no se usa en C++ presisamente porque causaba confusion... Entonces, ahora si no pones el tipo de retorno te da un error (o un warning, dependiendo del compilador)

void se utiliza para decir que esa funcion no regresa nada... por ejemplo:

Código:
void escribe() {
printf("Hola");
}
La funcion no necesita regresar nada ya que solo escribe "Hola"...

Última edición por scrolling; 09/08/2005 a las 13:25
  #3 (permalink)  
Antiguo 08/08/2005, 08:11
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Y para complementar en términos generales

void = procedimiento (no regresa valor)
y cuando defines el tipo (diferente de void) = funcion (te regresa un valor)

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #4 (permalink)  
Antiguo 08/08/2005, 10:49
Avatar de Hager  
Fecha de Ingreso: mayo-2005
Ubicación: Bogota, Colombia
Mensajes: 106
Antigüedad: 18 años, 11 meses
Puntos: 2
mira:

int funcion(int x)
{
if (x==8) {cout<<"mi valor es"<<x;return 1;}

x=8;
cout<<"mi valor es"<<x;
getch();
return 0;
}

observa que el return se utiliza para cortar una función cuando llega a un resultado satisfactorio.....
o continuar hasta que lo haga
observa:

void funcion(int x)
{
if (x==8) {cout<<"mi valor es"<<x;return;}

x=8;
cout<<"mi valor es"<<x;
getch();
return;
}

como la funcion es void no retorna nada y tambien podemos cortarla cuando queramos... esto sirve bastante y nos ahorra en cierta forma la mamera de los if largos hasta el final como por ejemplo:

void funcion(int x)
{
if (x==8) {cout<<"mi valor es"<<x;}
else
{
x=8;
cout<<"mi valor es"<<x;
}
getch();
}
__________________
:cool: Nadie enseña a nadie...
todos aprendemos de todos....!!!
  #5 (permalink)  
Antiguo 08/08/2005, 11:24
Avatar de jorge_alveláis  
Fecha de Ingreso: marzo-2005
Mensajes: 27
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola webbeginer...

Creo que tu duda sobre la utilización de 'void', se refiere a que algunas veces se utiliza eso en la función principal 'main ( )', mas no en las funciones personalizadas. Con esto quiero aclarar que los otros usuarios 'scrolling', 'Rootk' y 'Hager', tienen razón en lo que dijeron, pero ellos se refirieron a las funciones personalizadas.

Si en lo anterior estoy bien, entonces; cuando escribes:

main ()
{
...
...
return 0;
}


le estás diciendo a tu programa que si en la función principal no se regresa ese valor, se marque un error de ejecución, ya que hubo algún error en el programa. Pero cuando utilizas:

void main ()
{
...
...
}


el programa cuando tenga un error de ejecución, no le importará ese error y no marcará nada.

Espero esto te haya aclarado tu duda.


Hasta luego
  #6 (permalink)  
Antiguo 08/08/2005, 15:32
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Cita:
Iniciado por jorge_alveláis
Creo que tu duda sobre la utilización de 'void', se refiere a que algunas veces se utiliza eso en la función principal 'main ( )', mas no en las funciones personalizadas. Con esto quiero aclarar que los otros usuarios 'scrolling', 'Rootk' y 'Hager', tienen razón en lo que dijeron, pero ellos se refirieron a las funciones personalizadas.

Si en lo anterior estoy bien, entonces; cuando escribes:

main ()
{
...
...
return 0;
}

le estás diciendo a tu programa que si en la función principal no se regresa ese valor, se marque un error de ejecución, ya que hubo algún error en el programa. Pero cuando utilizas:

void main ()
{
...
...
}

el programa cuando tenga un error de ejecución, no le importará ese error y no marcará nada.

Espero esto te haya aclarado tu duda.








Hasta luego
A ver... en C (en C++ ya no, pero en C) cuando a main() lo pones asi:

Código:
main() {
//..
return 0;
}
Esta bien, lo que pasa es que en C, al no ponerle tipo de retorno a la funcion el compilador lo toma como int, por eso tienes que ponerle el "return 0".

Si no quieres que main regrese nada le tienes que poner void... aunque te puede dar warning o error, ya que tu programa tiene que regresar 0 para que el sistema sepa que termino correctamente.
  #7 (permalink)  
Antiguo 08/08/2005, 17:35
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Esta discusión no va a nada. Si quieres seguir lo más estándar, sólo hay una forma:

Código:
int main() { /*...*/ return 0; }
En C++ se _permite_ el uso de void, pero siempre va a devolver un valor, pongas o no pongas int.

En cualquier caso es simplemente el comienzo del programa, ¿quién se preocupa por eso? Usa lo más estándar y punto. :)
  #8 (permalink)  
Antiguo 08/08/2005, 18:09
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Cita:
Iniciado por MaxExtreme
Esta discusión no va a nada. Si quieres seguir lo más estándar, sólo hay una forma:

Código:
int main() { /*...*/ return 0; }
En C++ se _permite_ el uso de void, pero siempre va a devolver un valor, pongas o no pongas int.

En cualquier caso es simplemente el comienzo del programa, ¿quién se preocupa por eso? Usa lo más estándar y punto. :)

"Hazlo porque yo lo digo..." excelente respuesta
  #9 (permalink)  
Antiguo 09/08/2005, 00:11
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
La respuesta esta claramente en el primer mensaje de scrolling pero ya que estamos simplemente repitiendonos les dejo un poco mas informacion sobre return y como se devuelven valores de una funcion asi comprueban como SIEMPRE se devuelve algun valor:

http://www.c0d3rz.com.ar/foro/viewtopic.php?t=53
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #10 (permalink)  
Antiguo 09/08/2005, 07:09
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
"Hazlo porque yo lo digo..." excelente respuesta
He dado la razón más contundente: Sigue el estándar.
  #11 (permalink)  
Antiguo 09/08/2005, 14:17
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Si tu crees que eso contesta la pegunta original...
  #12 (permalink)  
Antiguo 09/08/2005, 18:10
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
Si tu crees que eso contesta la pegunta original...

Cita:
cuando usar void
Nunca, usar mejor la forma estándar.
  #13 (permalink)  
Antiguo 09/08/2005, 19:03
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Cita:
Alguien me podria explicar...
Esa tambien es parte de la pregunta original... Y dices que esta "discucion" (que no lo es) no va a nada... hasta que llegaste tu a ilumnarnos. Gracias!
  #14 (permalink)  
Antiguo 09/08/2005, 22:15
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
Esa tambien es parte de la pregunta original... Y dices que esta "discucion" (que no lo es) no va a nada... hasta que llegaste tu a ilumnarnos. Gracias!
Cita:
Alguien me podria explicar la diferencia __o__ cuando usar void,
Primero, que la explicación es simple: Una cumple el estándar y la otra no.
Segundo, sólo preguntaba una de las dos cosas.

  #15 (permalink)  
Antiguo 10/08/2005, 14:11
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Cita:
Iniciado por MaxExtreme

Cita:
Alguien me podria explicar la diferencia __o__ cuando usar void,
Primero, que la explicación es simple: Una cumple el estándar y la otra no.
Segundo, sólo preguntaba una de las dos cosas.


Jajajaja... ese __o__ que???? jajaja, bueno... al final webbeginner tendra una idea de lo que pregunto :D
  #16 (permalink)  
Antiguo 11/08/2005, 03:53
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
Jajajaja... ese __o__ que???? jajaja, bueno... al final webbeginner tendra una idea de lo que pregunto :D
Se usan los _ para remarcar algo...
  #17 (permalink)  
Antiguo 11/08/2005, 20:25
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Nada que ver...
  #18 (permalink)  
Antiguo 11/08/2005, 20:44
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 20 años, 5 meses
Puntos: 7
lo mas chistoso es que webbeginer no ha regresado para ver que paso y es algo exageradamente sencillo como para discutir por eso jejeje.

saludos
  #19 (permalink)  
Antiguo 11/08/2005, 21:27
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Jajajaja, es cierto... pero es que como puede llegar maxextreme a decir:

Cita:
Esta discusión no va a nada
En primera ni era discucion... y en segunda lo dice como si el viniera a iluminarnos de todas las tonterias que decimos... Es chistoso, porque al final el es el que da la peor respuesta
  #20 (permalink)  
Antiguo 12/08/2005, 08:19
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Ya había pasado algo de tiempo sin ver éste tipo de post..

Pero bueno, espero que ya no se siga con éste hilo que realmente no sirve de nada... :-p

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #21 (permalink)  
Antiguo 12/08/2005, 08:24
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Cita:
Iniciado por RootK
Ya había pasado algo de tiempo sin ver éste tipo de post..

Pero bueno, espero que ya no se siga con éste hilo que realmente no sirve de nada... :-p

Salu2
Yo dejaria la pregunta y la respuesta de scrolling y borraria todo lo demas que es redundante ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #22 (permalink)  
Antiguo 12/08/2005, 13:36
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
Es chistoso, porque al final el es el que da la peor respuesta
Perdona, mi respuesta no fue la más explicada, pero fue la más concreta.

No sé cómo puedes insultarme diciendo que digo "las peores respuestas"... Se nota un cierto ápice de envidia :)
  #23 (permalink)  
Antiguo 12/08/2005, 13:41
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Cita:
Iniciado por MaxExtreme
Perdona, mi respuesta no fue la más explicada, pero fue la más concreta.

No sé cómo puedes insultarme diciendo que digo "las peores respuestas"... Se nota un cierto ápice de envidia :)
Jajajajajaja, ya me descubriste Jajajajajajajajaja (sacasmo )

Yo no sé como puedes insultar a los demas diciendo que lo que dicen no va a ningun lado, cuando la respuesta ya estaba dada por nosotros....

P.D.: Jajaja, no crei que fueras tan simpatico :D
  #24 (permalink)  
Antiguo 12/08/2005, 14:03
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Si hablamos de respuestas creo que ambos dieron información válida, no es necesario decir que uno dió mas que otro

Pero bueno... si éste hilo se va a segiur con "respuestas" que ya no tengan sentido mejor evitenme la pena de borrarlas...
  #25 (permalink)  
Antiguo 12/08/2005, 14:19
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Jajajaja hacia mucho que no se hacian asi... :P
  #26 (permalink)  
Antiguo 12/08/2005, 15:13
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
Yo no sé como puedes insultar a los demas diciendo que lo que dicen no va a ningun lado, cuando la respuesta ya estaba dada por nosotros....
Yo he dicho que la _discusión_ no iba a ningún lado, porque como ya has dicho tú mismo y Eternal Idol, el apartado de la "explicación" ya lo habías contestado y le estaban dando vueltas. Pero el otro apartado, que preguntaba sobre qué opción usar mejor, no estaba contestado, y lo contesté. Simplemente eso.

¿Nos hemos aclarado?
  #27 (permalink)  
Antiguo 12/08/2005, 15:33
 
Fecha de Ingreso: junio-2005
Ubicación: México, México
Mensajes: 429
Antigüedad: 18 años, 10 meses
Puntos: 1
Primero dices:
Cita:
Iniciado por MaxExtreme
Esta discusión no va a nada
Y luego dices:
Cita:
Iniciado por MaxExterme
Yo he dicho que la _discusión_ no iba a ningún lado
Jajaja lo dices solo porque en uno dijiste "nada" y en el otro "lado" Jajajajaja
  #28 (permalink)  
Antiguo 12/08/2005, 15:46
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por scrolling
Primero dices:


Y luego dices:


Jajaja lo dices solo porque en uno dijiste "nada" y en el otro "lado" Jajajajaja
¿? Tus frases no tienen mucho sentido...
  #29 (permalink)  
Antiguo 12/08/2005, 16:57
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Sin comentarios..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 09:07.