Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Quando um inteiro não assinado é convertido em um inteiro ou tipo de ponto flutuante, se o valor original for representável no tipo de resultado, o valor não será alterado.
Quando o compilador converte um inteiro não assinado em um inteiro de tamanho maior, o valor é estendido a zero. Quando convertidos em um inteiro de tamanho menor, os bits de ordem alta são truncados. O resultado é interpretado usando o tipo de resultado, como mostrado neste exemplo:
unsigned k = 65533;
short j;
j = k;
printf_s( "%hd\n", j ); // Prints -3
Quando o compilador converte um inteiro não assinado em um tipo de vírgula flutuante, se o valor original não for representável exatamente no tipo de resultado, o resultado será o próximo valor representável maior ou menor.
Consulte Armazenamento de tipos básicos para obter informações sobre os tamanhos dos tipos integral e de vírgula flutuante.
Específico da Microsoft
No compilador da Microsoft, (ou unsigned int) e unsigned long são tipos distintos, unsigned mas equivalentes. A conversão de um unsigned int valor processa-se da mesma forma que a conversão de um unsigned long.
END Específico da Microsoft
A tabela a seguir resume conversões de tipos integrais não assinados.
Tabela de conversões de tipos integrais não assinados
| De | Para | Método |
|---|---|---|
unsigned char |
char |
Preservar padrão de bits; bit de alta ordem torna-se bit de sinal |
unsigned char |
short |
Extensão zero |
unsigned char |
long |
Extensão zero |
unsigned char |
long long |
Extensão zero |
unsigned char |
unsigned short |
Extensão zero |
unsigned char |
unsigned long |
Extensão zero |
unsigned char |
unsigned long long |
Extensão zero |
unsigned char |
float |
Converta exatamente para float |
unsigned char |
double |
Converta exatamente para double |
unsigned char |
long double |
Converta exatamente para long double |
unsigned short |
char |
Preservar byte de ordem baixa |
unsigned short |
short |
Preservar padrão de bits; bit de alta ordem torna-se bit de sinal |
unsigned short |
long |
Extensão zero |
unsigned short |
long long |
Extensão zero |
unsigned short |
unsigned char |
Preservar byte de ordem baixa |
unsigned short |
unsigned long |
Extensão zero |
unsigned short |
unsigned long long |
Extensão zero |
unsigned short |
float |
Converta exatamente para float |
unsigned short |
double |
Converta exatamente para double |
unsigned short |
long double |
Converta exatamente para long double |
unsigned long |
char |
Preservar byte de ordem baixa |
unsigned long |
short |
Preservar a palavra de ordem baixa |
unsigned long |
long |
Preservar padrão de bits; bit de alta ordem torna-se bit de sinal |
unsigned long |
long long |
Extensão zero |
unsigned long |
unsigned char |
Preservar byte de ordem baixa |
unsigned long |
unsigned short |
Preservar a palavra de ordem baixa |
unsigned long |
unsigned long long |
Extensão zero |
unsigned long |
float |
Converter para o representante mais próximo float |
unsigned long |
double |
Converta exatamente para double |
unsigned long |
long double |
Converta exatamente para long double |
unsigned long long |
char |
Preservar byte de ordem baixa |
unsigned long long |
short |
Preservar a palavra de ordem baixa |
unsigned long long |
long |
Preservar dword de baixa ordem |
unsigned long long |
long long |
Preservar padrão de bits; bit de alta ordem torna-se bit de sinal |
unsigned long long |
unsigned char |
Preservar byte de ordem baixa |
unsigned long long |
unsigned short |
Preservar a palavra de ordem baixa |
unsigned long long |
unsigned long |
Preservar dword de baixa ordem |
unsigned long long |
float |
Converter para o representante mais próximo float |
unsigned long long |
double |
Converter para o representante mais próximo double |
unsigned long long |
long double |
Converter para o representante mais próximo long double |