Partilhar via


Conversões de tipos integrais não assinados

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

Ver também

Conversões de atribuição