Operador cast

Publicado por Rhico de Souza em 04/06/2008

[ Hits: 20.953 ]

 


Operador cast



Esta dica é para quem está começando a aprender linguagem C. O seu objetivo principal é chamar a atenção dos iniciantes ao uso do operador cast, que tem pegado muita gente desprevenida em provas e testes. Aqui você vai encontrar apenas para que serve esse operador e como usá-lo. Boa leitura.

O operador cast tem a função de forçar uma variável a ser de um tipo diferente do que foi declarado no programa. Assim, pode-se mudar uma variável de tipo int para float. Mas para que? Para responder essa pergunta, vamos analisar o seguinte exemplo:

#include<stdio.h>
#include<conio.h>
   void main(){
      float res;
      int n1, n2, n3, n4;
   clrscr();
      scanf("%d%d%d%d", &n1, &n2, &n3, &n4);
      res=(n1+n2+n3+n4)/4;
      printf(" %.2f ", res);
      getch();
        }

Este simples programa calcula a média de quatro números inteiros. Nele eu não utilizei o operador cast.

Agora vamos executá-lo usando os seguintes valores: n1=3, n2=2, n3=4 e n4=1. Com esses valores obtemos soma igual a 10, logo se a dividirmos por 4, o resultado impresso na tela deve ser 2,50, já que res é de tipo float. Entretanto, se você executar o programa, verá que a resposta foi igual a 2,00.

Porque isso acontece? A explicação desse erro é muito simples. Os valores para n1, n2, n3 e n4 são todos inteiros, logo a soma destes também dá um número inteiro. Essa soma foi dividida por um número (4), que é um número inteiro. Por causa disso, res recebeu um valor inteiro. Isso ocorre porque na linguagem C, uma operação realizada só com números inteiros não passa um valor de outro tipo como resposta.

É aí que entra o operador cast, para forçar as variáveis a ser de tipo float.

A sintaxe do operador cast é a seguinte:

Variável=(tipo)operação;

Vamos ver agora o mesmo exemplo com o uso do cast:

#include<stdio.h>
#include<conio.h>
   void main(){
      float res;
      int n1, n2, n3, n4;
   clrscr();
      scanf("%d%d%d%d", &n1, &n2, &n3, &n4);
      res=(float)(n1+n2+n3+n4)/4;
      printf(" %.2f ", res);
      getch();
        }

Se você observar, o operador cast foi usado na linha : res=(float)(n1+n2+n3+n4)/4;

Agora, rodando o programa se obtém o resultado esperado, 2,50.

Fácil, não?

Uma outra forma de se obter o mesmo resultado sem o operador cast, é colocar no lugar do 4, o valor 4,0. Desse modo o valor real do divisor irá se sobressair ao tipo inteiro das variáveis, passando uma resposta de tipo real. Teste depois (sem usar o cast).

Como você pode observar, o operador cast é muito simples e muito fácil de se esquecer, o que pode trazer muitos problemas para o seu programa. Já vi muita gente errando questões de prova por causa do cast, sem contar nos testes para emprego ou estágio onde esquecem de usar esse operador. Um desastre!! Vamos prestar mais atenção nas operações e, se for o caso, usar o cast. Assim o resultado é 10!!

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Entendendo essa coisa de Grátis (GNU)

E-book sobre Ubuntu 12.04

Instalação do Adicional de Segurança WARSAW via linha de comando

Resolvendo Problemas de Áudio no Ubuntu 10.10

Criando uma ISO do openBSD 4.1

  

Comentários
[1] Comentário enviado por removido em 04/06/2008 - 11:09h

Eu me incluo no "(...) está começando a aprender linguagem C".

Boa dica.

[2] Comentário enviado por eng_ividal em 04/06/2008 - 19:20h

eh interessante lembrar que C usa ponto ao inves de virgula pra separar decimal.
interessante a dica!!!

[3] Comentário enviado por andrezc em 22/05/2010 - 20:57h

Só lembrando que a conio.h não rodaria no Linux, portanto, a função getch() deveria ser removida do código, junto com o #include<conio.h>.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts