Contenido del Curso
C Básico
C Básico
Declaración, Tipo y Retorno
De nuestra lección anterior, aprendiste la anatomía básica de las funciones:
Declaración
Antes de utilizar una función, debe ser declarada. Llamar a una función antes de su declaración resultará en un error.
Puedes declarar toda la función simultáneamente con su definición (como se ilustra arriba) o usar un prototipo, del cual hablaremos como un extra al final de este segmento.
Tipos de Funciones y Valores de Retorno
El tipo de la función informa al compilador sobre el tipo de dato 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
.
Una discrepancia entre el tipo de dato y el tipo de retorno podría hacer que la función (o incluso todo el programa) funcione incorrectamente. Aquí hay un ejemplo: vamos a sumar dos números no enteros, pero configuramos la función para que devuelva un tipo entero:
Al sumar valores no enteros, esperarías 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
); - Uso del 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 cadena.
Esto implica que podemos asignar directamente el resultado de la función a variables/arreglos 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 punto flotante.
También vale la pena mencionar que una función puede contener múltiples declaraciones return
, cada una activándose bajo condiciones distintas.
¡Gracias por tus comentarios!