Contenido del Curso
Fundamentos de C
Fundamentos de C
Declaración, Tipo y Retorno
En la lección anterior aprendiste la anatomía básica de las funciones:
Declaración
Antes de utilizar una función, hay que declararla. Llamar a una función antes de su declaración producirá un error.
Puede declarar la función completa simultáneamente con su definición (como se ilustra arriba) o utilizar un prototipo, que tocaremos como extra al final de este segmento.
Tipos de Función y Valores de Retorno
El tipo de la función informa al compilador sobre el tipo de datos del resultado de la función. Por ejemplo, si nuestra función calcula la suma de dos enteros, entonces anticipamos un entero como resultado:
Nota
Si no se especifica un tipo de función, el compilador por defecto lo trata como un
int
.
Un desajuste entre el tipo de datos y el tipo de retorno puede hacer que la función (o incluso todo el programa) no funcione correctamente. He aquí un ejemplo: sumemos dos números no enteros, pero configuremos la función para que devuelva un tipo entero:
Al sumar valores no enteros, se esperaría un resultado preciso. Pero debido a la inconsistencia de tipos, el resultado es erróneo.
Main
#include <stdio.h> int func() { double number1 = 6.985; // not int nubmer double number2 = 231.765; // not int number double result = number1 + number2; // not int number too return result; // output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }
Dos factores principales contribuyen a este error:
- Un tipo de retorno incorrecto (debería ser
double
); - El uso de un especificador de formato incorrecto (
%d
) en la funciónprintf()
(debería ser%f
).
La versión correcta sería:
Main
#include <stdio.h> double func() { double number1 = 6.985; // int nubmer double number2 = 231.765; // int number double result = number1 + number2; // int number too return result; // output of function } int main() { // We immediately print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Nota
El resultado de cualquier función será típicamente un valor numérico o de string.
Esto implica que podemos asignar directamente el resultado de la función a variables/arrays o incluso pasarlo a otras funciones. Un ejemplo de esto es cómo usamos el resultado con la función printf
en los escenarios anteriores.
Nota
%f
es el especificador de formato para números de coma flotante.
También vale la pena mencionar que una función puede albergar múltiples declaraciones return
, con cada activación bajo condiciones distintas.
¡Gracias por tus comentarios!