Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Declaração, Tipo e Retorno | Funções
Fundamentos de C
course content

Conteúdo do Curso

Fundamentos de C

Fundamentos de C

1. Introdução
2. Dados
3. Operadores
4. Declarações de Controle
5. Funções
6. Ponteiros

bookDeclaraçã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.

c

Main

copy
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ção printf() (deveria ser %f).

A versão correta seria:

c

Main

copy
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.

Você construiu a função `count`, como você a invocaria dentro da função `main`?

Você construiu a função count, como você a invocaria dentro da função main?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 2
some-alt