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?
Ambas opciones son correctas.
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:variable=mifuncion();
if((variable== -1){
perror("Error");
}
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
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