Na conversão implícita, sem perda de dados, um tipo de dado de um tamanho menor é convertido
para um tipo de dado de tamanho maior. Nessa situação nenhum tipo de validação é feito, sendo a
conversão feita de forma automática.
Exemplo 1
long int < int
int < short
short < char
Onde
<: Sentido da conversão. Menor tamanho para o de maior tamanho
Exemplo 2
#include <stdio.h>
int main()
{
short int valor1 = 256; // 2bytes
int valor2 = valor1; // 4 bytes < 2 bytes
printf("valor1:%d\n",valor1);
printf("valor2:%d",valor2);
}
Saída
valor1:256
valor2:256
Na conversão implícita, com perda de dados, um tipo de dado de tamanho maior é convertido para
um tipo de dado de tamanho menor. Nesse caso, nenhum tipo de validação e a conversão
é feita automaticamente. Apenas o tipo de dado de menor tamanho é convertido sendo o restante dos dados
perdidos.
Exemplo 3
long int > int
int > short
short > char
Onde
>: Sentido da conversão. Maior tamanho para o de menor tamanho
Exemplo 4
#include <stdio.h>
int main()
{
int valor1 = 65536;
short valor2 = valor1;
printf("valor1:%d\n",valor1);
printf("valor2:%d",valor2);
}
Saída
valor1:65536
valor2:0