No casting implícito, sem perda de dados, a linguagem C++ não faz nenhum tipo de validação e
a conversão é feita automaticamente de uma tipo de dado de menor capacidade de armazenamento para
uma tipo de dado maior capacidade.
Sintaxe
long int < int
int < short
short < char
Onde
<: Sentido da conversão. Menor tamanho para o de maior tamanho
Exemplo 1
#include <iostream>
using namespace std;
int main()
{
int a;
short b= 256;
a = b;
cout << a << endl;
cout << b << endl;
return 0;
}
No casting implícito, com perda de dados, a linguagem C++ faz uma validação interna e retornando uma tipo
de dado de menor capacidade de armazenamento para uma tipo de dado maior capacidade.
Sintaxe
long int > int
int > short
short > char
Onde
> : Sentido da conversão. Maior tamanho para o de menor tamanho
Exemplo 2
#include <iostream>
using namespace std;
int main()
{
int vl_int = 256;
char vl_char = vl_int;
cout << +vl_char << endl;
return 0;
}
Saída
0
Como o tipo de dado char armazena apenas 1 byte, na conversão acima, apenas o último byte do inteiro foi atribuído
a variável vl_char resultando em um valor 0. O valor 256 é armazenado como 0x100 em memória.
O símbolo + foi utilizado para informar que o valor vl_char deve ser exibido como valor numérico e não caracter.