Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Diferencias entre void e int

Estas en el tema de Diferencias entre void e int en el foro de C/C++ en Foros del Web. Hola, tengo estas funciones y ambas andan igual en mi programa, pero lo que quiero saber es cual es la diferencia si lo hago con ...
  #1 (permalink)  
Antiguo 02/05/2008, 14:36
Avatar de Marcos071  
Fecha de Ingreso: enero-2006
Ubicación: Presidencia Roque Sáenz Peña - Chaco
Mensajes: 384
Antigüedad: 18 años, 4 meses
Puntos: 5
Diferencias entre void e int

Hola, tengo estas funciones y ambas andan igual en mi programa, pero lo que quiero saber es cual es la diferencia si lo hago con viod nombre(){ }; y con int nombre(){ return 0; } ?

Aqui esta mi duda, esta parte del subprograma carga los bitmaps.


Código:
#include <allegro.h>
#include <stdio.h>

int bitmaps (BITMAP* &pelota, BITMAP* &paleta, BITMAP* &pantalla, BITMAP* &ladrillos, BITMAP* &ladrillos2,BITMAP* &fondo1
, BITMAP* &fondo2, BITMAP* &fondo3, BITMAP* &fondo4, BITMAP* &fondo5,  BITMAP* &ganastenivel,BITMAP* &abandonar,
BITMAP* &ganastefin){

PALETTE pal; 

paleta= load_bitmap("paleta.bmp",pal); 
pelota= load_bitmap("pelota.bmp",pal);  
ladrillos2=load_bitmap("ladrillorojo.tga",pal); 
ladrillos=load_bitmap("ladrilloceleste.tga",pal);
fondo1= load_bitmap("fondo1.tga",pal);
fondo2= load_bitmap("fondo2.tga",pal); 
fondo3= load_bitmap("fondo3.tga",pal); 
fondo4= load_bitmap("fondo4.tga",pal); 
fondo5= load_bitmap("fondo5.tga",pal); 
ganastefin=load_bitmap("ganastefin.tga",pal);
ganastenivel=load_bitmap("ganastenivel.tga",pal);
abandonar= load_bitmap("abandonar.tga",pal);
pantalla =create_bitmap(800,600); 
              
return 0;

}
Código:
#include <allegro.h>
#include <stdio.h>

void bitmaps (BITMAP* &pelota, BITMAP* &paleta, BITMAP* &pantalla, BITMAP* &ladrillos, BITMAP* &ladrillos2,BITMAP* &fondo1
, BITMAP* &fondo2, BITMAP* &fondo3, BITMAP* &fondo4, BITMAP* &fondo5,  BITMAP* &ganastenivel,BITMAP* &abandonar,
BITMAP* &ganastefin){

PALETTE pal; 

paleta= load_bitmap("paleta.bmp",pal); 
pelota= load_bitmap("pelota.bmp",pal);  
ladrillos2=load_bitmap("ladrillorojo.tga",pal); 
ladrillos=load_bitmap("ladrilloceleste.tga",pal);
fondo1= load_bitmap("fondo1.tga",pal);
fondo2= load_bitmap("fondo2.tga",pal); 
fondo3= load_bitmap("fondo3.tga",pal); 
fondo4= load_bitmap("fondo4.tga",pal); 
fondo5= load_bitmap("fondo5.tga",pal); 
ganastefin=load_bitmap("ganastefin.tga",pal);
ganastenivel=load_bitmap("ganastenivel.tga",pal);
abandonar= load_bitmap("abandonar.tga",pal);
pantalla =create_bitmap(800,600); 
               

}
Y por supuesto que en cada prototipo deberé especificar si es void o int, pero cual es la diferencia en estos dos codigos?
  #2 (permalink)  
Antiguo 02/05/2008, 15:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 303
Antigüedad: 16 años, 1 mes
Puntos: 4
Re: Diferencias entre void e int

Pues que la primera siempre envia el valor 0 a la función llamante, y la segunda no envía nada.
La verdad es que si la primera siempre va a retornar 0, no sirve para nada. Otra cosa es que pudiera retornar otros valores como por ejemplo códigos de error, en ése caso si sería util, pero para retornar siempre lo mismo es un poco absurdo.
  #3 (permalink)  
Antiguo 02/05/2008, 15:22
Avatar de Mephisto  
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: Diferencias entre void e int

Complementando lo que menciona a2a2

La estructura de las funciones se definen como

[Valor Retorno] Nombre_Funcion (Parametros de Entrada){}

Imagina una funcion como una caja negra en la cual puedes o no insertar datos y esta dara o no a la salida algun valor.

Cuando empleas void haces referencia a que el valor es vacio, por lo que si colocas

void funcion()

dices que esta funcion no regresara valores, si colocas

int funcion()

dices que la funcion dara a la salida un valor entero, por lo que necesitas un return.

Para intentar ser mas claro, imagina una funcion que emplees para desplegar en la pantalla dos valores que recibes. Como solo muestras en pantalla empleas void

void Muestra(int x, int y){
printf("los valores son %d y %d",x,y);
}

Por otro lado, si tienes una funcion que requieres te regresa la suma de los dos numeros

int Suma(int x, int y){
return x+y;
}

En muchas ocasiones empleas un retorno entero para saber que la función se ejecuta de manera correcta, por ejemplo una funcion que muestra en pantalla la división de dos numeros. En este caso debemos cuidar que la division no sea entre cero

int Division(int x, int y){
if(y == 0)
return -1;
printf("La division es %d",x/y);
return 0;
}

Con esto, si invoco la funcion Division en el main, si me regresa -1 se que existió un error en la ejecucion de la funcion, si me regresa 0, se ejecuto bien...

En Sintaxis, ambas formas son correctas, cual usar depende de lo que necesites para tu programa...

Espero haber sido claro...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...
  #4 (permalink)  
Antiguo 02/05/2008, 15:35
Avatar de Marcos071  
Fecha de Ingreso: enero-2006
Ubicación: Presidencia Roque Sáenz Peña - Chaco
Mensajes: 384
Antigüedad: 18 años, 4 meses
Puntos: 5
Re: Diferencias entre void e int

Claro, comprendo...esta fue una pregunta muy fatal para mi en un examen y me tiro por el suelo en febrero que sali mal...jeje...porque tenia muchas funciones con void, y me dijo que haga que todas devuelvan algo, pero no solo un 0 sino tambien con ecxepciones...

Ahora como ven me estoy volviendo a preparar para este 12, ya por 3ra vez la rindo...espero salir bien...

Muchas gracias a ambos, me sirvio muy bien...
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:02.