Conteúdo do Curso
Fundamentos de C
Fundamentos de C
Declaração, Tipo e Retorno
Na nossa lição anterior, você aprendeu a anatomia básica das funções:
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:
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:
Ao somar valores não inteiros, você esperaria um resultado preciso. Mas devido à inconsistência de tipo, o resultado é 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; }
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
#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!