Conteúdo do Curso
Noções Básicas de C
Noções Básicas de C
Declaração, tipo e retorno
Na nossa aula anterior, você aprendeu a anatomia básica das funções:
Declaração
Antes de utilizar uma função, ela deve ser declarada. Chamar uma função antes de sua declaração resultará em um erro.
Você pode declarar toda a função simultaneamente com a sua definição (como ilustrado acima) ou usar um protótipo, o qual abordaremos como um bônus ao final deste segmento.
Tipos de funções e valores de retorno
O tipo da função informa ao compilador sobre o tipo de dados do resultado da função. Por exemplo, se nossa função calcula a soma de dois inteiros, esperamos um inteiro como resultado:
Nota
Se o tipo de uma função não for especificado, o compilador trata por padrão como sendo 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) não funcione corretamente. Veja um exemplo: vamos adicionar 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
); - Usando o 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á normalmente um valor numérico ou de texto.
Isso significa que podemos atribuir diretamente o resultado da função a variáveis/arrays ou até mesmo passá-lo a outras funções. Um exemplo disso é como utilizamos 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últiplos comandos return
, com cada um ativando sob condições distintas.
Obrigado pelo seu feedback!