No casting implícito, 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
No casting implícito, 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