Declaração, Tipo e Retorno
Na nossa lição anterior, você aprendeu a anatomia básica das funções:
func_type func_name(arguments_placeholder)
{
// the core functionality of the function
block_of_code;
// 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 um erro.
Você pode declarar a função inteira simultaneamente com sua definição (como ilustrado acima) ou usar um protótipo, que abordaremos como um bônus no 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:
int sumFunction()
{
int number1 = 6;
int number2 = 10;
int result = number1 + number2;
return result;
}
Nota
Se um tipo de função não for especificado, o compilador assume que é um
int.
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. Aqui está um exemplo: vamos somar dois números não inteiros, mas definir a função para retornar um tipo inteiro:
int addFunction()
{
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, você esperaria um resultado preciso. Mas devido à inconsistência de tipo, o resultado é errôneo.
Main.c
123456789101112131415161718#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; }
Dois fatores principais contribuem para este erro:
- Um tipo de retorno incorreto (deveria ser
double); - Uso do especificador de formato errado (
%d) na funçãoprintf()(deveria ser%f).
A versão correta seria:
Main.c
123456789101112131415161718#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
O resultado de qualquer função será tipicamente um valor numérico ou de string.
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 usamos o resultado com a função printf nos cenários acima.
Nota
%fé o especificador de formato para números de ponto flutuante.
Também vale mencionar que uma função pode conter múltiplas instruções return, com cada uma ativando 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
Pergunte-me perguntas sobre este assunto
Resumir este capítulo
Mostrar exemplos do mundo real
Awesome!
Completion rate improved to 2.63
Declaração, Tipo e Retorno
Deslize para mostrar o menu
Na nossa lição anterior, você aprendeu a anatomia básica das funções:
func_type func_name(arguments_placeholder)
{
// the core functionality of the function
block_of_code;
// 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 um erro.
Você pode declarar a função inteira simultaneamente com sua definição (como ilustrado acima) ou usar um protótipo, que abordaremos como um bônus no 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:
int sumFunction()
{
int number1 = 6;
int number2 = 10;
int result = number1 + number2;
return result;
}
Nota
Se um tipo de função não for especificado, o compilador assume que é um
int.
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. Aqui está um exemplo: vamos somar dois números não inteiros, mas definir a função para retornar um tipo inteiro:
int addFunction()
{
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, você esperaria um resultado preciso. Mas devido à inconsistência de tipo, o resultado é errôneo.
Main.c
123456789101112131415161718#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; }
Dois fatores principais contribuem para este erro:
- Um tipo de retorno incorreto (deveria ser
double); - Uso do especificador de formato errado (
%d) na funçãoprintf()(deveria ser%f).
A versão correta seria:
Main.c
123456789101112131415161718#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
O resultado de qualquer função será tipicamente um valor numérico ou de string.
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 usamos o resultado com a função printf nos cenários acima.
Nota
%fé o especificador de formato para números de ponto flutuante.
Também vale mencionar que uma função pode conter múltiplas instruções return, com cada uma ativando sob condições distintas.
Obrigado pelo seu feedback!