Pular para o conteúdo
Ana Malagoli

Conversão entre tipos de dados

Em C existem duas maneiras de converter um tipo de dado em outro: conversão implícita e conversão explícita (casting)

C 1 min de leitura

Ocorre automaticamente quando mistura diferentes tipos de dados em uma expressão. O compilador converte os tipos de dados para realizar a operação de acordo com o que o programador escreveu.

#include <stdio.h>
int main() {
int a = 10;
float b = 3.5;
float resultado = a + b; // 'a' é convertido implicitamente para float
printf("Resultado: %.2f\n", resultado);
return 0;
}

Explicação da saída: a saída do programa mostra que a soma de a (10) e b (3.5) resulta em 13.50. A variável inteira a foi automaticamente convertida para float na expressão a + b, permitindo que o resultado seja um número de ponto flutuante. O que efetivamente ocorre neste processo é que o valor de a (10) é promovido internamente para 10.0 (um float) antes da soma ser realizada.

A conversão explícita é feita usando operadores de casting para forçar a conversão de um tipo de dado para outro.

#include <stdio.h>
int main() {
int a = 10;
int b = 3;
float quociente = (float) a / b; // 'a' é explicitamente convertido para float
printf("Quociente: %.2f\n", quociente);
return 0;
}

Explicação da saída: a saída do programa mostra que a divisão de a (10) por b (3) resulta em 3.33. A variável a foi explicitamente convertida para float antes da divisão, garantindo que o resultado fosse um valor de ponto flutuante.

Para garantir que suas operações aritméticas sejam realizadas corretamente e evitar problemas de precisão e perda de dados, abaixo algumas práticas recomendadas para seguir:

  1. Sempre verifique os tipos de dados ao realizar operações aritméticas para evitar resultados inesperados.
  2. Utilize casting explícito para garantir que as operações sejam realizadas no tipo de dado correto.
  3. Cuidado com a precisão: Lembre-se de que variáveis de ponto flutuante podem introduzir erros de precisão. Use double para maior precisão quando necessário.