Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Grado 33 en 21 Mayo 2017, 15:06 pm



Título: Que diferencia hay entre una funcion void e int??
Publicado por: Grado 33 en 21 Mayo 2017, 15:06 pm
Hola, recién entré a aprender c++, y ahora estoy con las funciones. Mi duda es la siguiente: Que diferencia hay entre una funcion void e int??

pregunto esto porque muchas veces se usa int funcion (parametros) o void funcion (parametros) según el valor de retorno o algo asi. pero por ejemplo, si hago una funcion que sirve para sumar dos enteros:
Código:
int suma(num, num2)
{
cout << num + num2 << endl;
}

y pongo int para que la funcion sea int (como se supone que debe de ser) va bien, pero pasa exactamente lo mismo que si en ves de poner int pongo void
Código:
void suma(num, num2)
{
cout << num + num2 << endl;
}

entonces, que diferencia hay?? porqué hay que usar int y no void, si ambos funcionan igual??


Título: Re: Que diferencia hay entre una funcion void e int??
Publicado por: MAFUS en 21 Mayo 2017, 15:22 pm
Como te acqbas de iniciar te diré que debes hacer la función del mismo tipo que regresarás con el return a final de ella. Si la función no devolverá nada debe ser void.
Si te fijas en los mensajes del compilador te lanzará quejas por no devolver nada cuando hay que hacerlo.
La verdad es mucho más profunda pero a nivel de quien acaba de empezar basta eso.


Título: Re: Que diferencia hay entre una funcion void e int??
Publicado por: ivancea96 en 21 Mayo 2017, 18:30 pm
(https://gyazo.com/d2e6146773129cdd3b42a91290d3404e.png)

Hay 2 posibles casos: que una función no retorne nada (en tal caso le ponemos void), o que retorne algo (en tal caso, le ponemos el tipo que retorna, que puede ser cualquiera)(en este caso, int).

Código
  1. int suma(int num, int num2){
  2.    return num + num2;
  3. }
  4.  
  5. int main(){
  6.    int resultado = suma(5, 7);
  7.    cout __ resultado __ endl;
  8.  
  9.    // O, directamente:
  10.     cout __ suma(5, 7) __ endl;
  11. }

Código
  1. void sumaYCout(int num, int num2){
  2.    cout __ num + num2 __ endl;
  3. }
  4.  
  5. int main(){
  6.    sumaYCout(5, 7);
  7. }

(Perdona por no poner los símbolos menor que en los cout, pero si los pongo se corta el mensaje ahí por determinadas razones que ahora no puedo solucionar :X

El tema es, si no vas a hacer nada con el retorno de la función, no pasa nada. Sin embargo, si la función realmente no va a retornar nada, entonces debe ser void.