funciones en c

Iniciado por sesiopower, 23 Marzo 2014, 02:17 AM

0 Miembros y 1 Visitante están viendo este tema.

sesiopower

hola tengo una duda sobre las funciones.
yo tengo una funcion llamada mifuncion() que devuekve -1 en caso de producirse un error.
mi duda: yo hago la siguiente asignacion:
   if(mifuncion() == -1){
      perror("Error");
   }

¿estaría bien el código o habria que asignarle previamente el valor devuelto por la funcion a una variable?:
     if((variable=mifuncion()) == -1){
        perror("Error");
     }

yo creo que con la primera opcion seria suficiente para saber si en la funcion se produce error.

¿alguien me aclara la duda?

amchacon

Ambas opciones son correctas.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

leosansan

Cita de: sesiopower en 23 Marzo 2014, 02:17 AM
hola tengo una duda sobre las funciones.
yo tengo una funcion llamada mifuncion() que devuekve -1 en caso de producirse un error.
mi duda: yo hago la siguiente asignacion:
   if(mifuncion() == -1){
      perror("Error");
   }

¿estaría bien el código o habría que asignarle previamente el valor devuelto por la función a una variable?:
if((variable=mifuncion()) == -1){
  perror("Error");
}

yo creo que con la primera opción seria suficiente para saber si en la función se produce error.

¿alguien me aclara la duda?

Sí, la primera sería suficiente, pero la segunda como la tienes parece una repetición de la primera. Supongo que lo que querías poner es:

Código (cpp) [Seleccionar]
variable=mifuncion();
if((variable== -1){
    perror("Error");
}


¡¡¡¡ Saluditos! ..... !!!!





rir3760

Cita de: leosansan en 24 Marzo 2014, 08:35 AM
la segunda como la tienes parece una repetición de la primera. Supongo que lo que querías poner es:
variable = mifuncion();
if (variable == -1){
    perror("Error");
}
La segunda forma de sesiopower y la que publicas son equivalentes. Se utilizan cuando el valor de retorno de una función (o el resultado de alguna otra expresión) debe utilizarse posteriormente.

Un ejemplo común sucede con la función getchar. Por ejemplo si se deben procesar todos los caracteres de la entrada estándar contando su numero de lineas:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int ch;
   int nl; /* numero de lineas */
   
   nl = 0;
   while ((ch = getchar()) != EOF)
      if (ch == '\n')
         nl++;
   
   printf("%d\n", nl);
   
   return EXIT_SUCCESS;
}

En el ejemplo se debe almacenar en una variable el resultado de getchar ya que de no hacerlo no podríamos comparar este con '\n' (para contar el numero de lineas).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language