Declaração, Tipo e Retorno
Na lição anterior, você aprendeu a anatomia básica das funções:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Declaração
Antes de utilizar uma função, ela precisa ser declarada. Chamar uma função antes de sua declaração resultará em erro.
Você pode declarar toda a função simultaneamente com sua definição (como ilustrado acima) ou usar um protótipo, que será abordado como bônus ao final deste segmento.
Tipos de Função e Valores de Retorno
O tipo da função informa ao compilador sobre o tipo de dado do resultado da função. Por exemplo, se nossa função calcula a soma de dois inteiros, então esperamos um inteiro como resultado.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Uma incompatibilidade entre o tipo de dado e o tipo de retorno pode fazer com que a função (ou até mesmo todo o programa) funcione incorretamente.
main.c
12345678int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }
Ao somar valores não inteiros, espera-se um resultado preciso. No entanto, devido à inconsistência de tipos, o resultado é incorreto.
main.c
1234567891011121314151617#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; 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; }
Dois fatores principais contribuem para esse erro:
- Tipo de retorno incorreto (deve ser
double); - Uso do especificador de formato errado (
%d) na funçãoprintf()(deve ser%f).
A versão correta seria:
main.c
1234567891011121314151617#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Isso implica que podemos atribuir diretamente o resultado da função a variáveis/arrays ou até mesmo passá-lo para outras funções. Um exemplo disso é como utilizamos o resultado com a função printf nos cenários acima.
O especificador de formato para números de ponto flutuante é %f.
Também é importante mencionar que uma função pode conter múltiplas instruções return, cada uma ativada sob condições distintas.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain more about function prototypes?
What happens if I use the wrong return type in my function?
Can you give an example of a function with multiple return statements?
Awesome!
Completion rate improved to 2.63
Declaração, Tipo e Retorno
Deslize para mostrar o menu
Na lição anterior, você aprendeu a anatomia básica das funções:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Declaração
Antes de utilizar uma função, ela precisa ser declarada. Chamar uma função antes de sua declaração resultará em erro.
Você pode declarar toda a função simultaneamente com sua definição (como ilustrado acima) ou usar um protótipo, que será abordado como bônus ao final deste segmento.
Tipos de Função e Valores de Retorno
O tipo da função informa ao compilador sobre o tipo de dado do resultado da função. Por exemplo, se nossa função calcula a soma de dois inteiros, então esperamos um inteiro como resultado.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Uma incompatibilidade entre o tipo de dado e o tipo de retorno pode fazer com que a função (ou até mesmo todo o programa) funcione incorretamente.
main.c
12345678int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }
Ao somar valores não inteiros, espera-se um resultado preciso. No entanto, devido à inconsistência de tipos, o resultado é incorreto.
main.c
1234567891011121314151617#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; 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; }
Dois fatores principais contribuem para esse erro:
- Tipo de retorno incorreto (deve ser
double); - Uso do especificador de formato errado (
%d) na funçãoprintf()(deve ser%f).
A versão correta seria:
main.c
1234567891011121314151617#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Isso implica que podemos atribuir diretamente o resultado da função a variáveis/arrays ou até mesmo passá-lo para outras funções. Um exemplo disso é como utilizamos o resultado com a função printf nos cenários acima.
O especificador de formato para números de ponto flutuante é %f.
Também é importante mencionar que uma função pode conter múltiplas instruções return, cada uma ativada sob condições distintas.
Obrigado pelo seu feedback!