Partilhar via


Conversões de tipos integrais sem sinal

Quando um inteiro sem sinal é convertido em um tipo inteiro ou de ponto flutuante, se o valor original for representável no tipo de resultado, o valor será inalterado.

Quando o compilador converte um inteiro sem sinal em um inteiro de tamanho maior, o valor é estendido com zero. Quando convertidos em um inteiro de tamanho menor, os bits de alta ordem são truncados. O resultado é interpretado usando o tipo de resultado, conforme mostrado neste exemplo:

unsigned k = 65533;
short j;

j = k;
printf_s( "%hd\n", j );   // Prints -3

Quando o compilador converter um inteiro sem sinal em um tipo de ponto 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 de tipos integrais e de ponto flutuante.

Seção específica da Microsoft

No compilador da Microsoft, unsigned (ou unsigned int) e unsigned long são tipos distintos, mas equivalentes. A conversão de um valor unsigned int é realizada da mesma maneira que a conversão de um unsigned long.

Fim da seção específica da Microsoft

A tabela a seguir resume as conversões de tipos integrais sem sinal.

Tabela de conversões de tipos integrais sem sinal

De Para Método
unsigned char char Preserva o padrão de bits; o bit de ordem superior torna-se o bit de sinal
unsigned char short Extensão de zero
unsigned char long Extensão de zero
unsigned char long long Extensão de zero
unsigned char unsigned short Extensão de zero
unsigned char unsigned long Extensão de zero
unsigned char unsigned long long Extensão de zero
unsigned char float Converter exatamente em float
unsigned char double Converter exatamente em double
unsigned char long double Converter exatamente em long double
unsigned short char Preserva o byte de ordem inferior
unsigned short short Preserva o padrão de bits; o bit de ordem superior torna-se o bit de sinal
unsigned short long Extensão de zero
unsigned short long long Extensão de zero
unsigned short unsigned char Preserva o byte de ordem inferior
unsigned short unsigned long Extensão de zero
unsigned short unsigned long long Extensão de zero
unsigned short float Converter exatamente em float
unsigned short double Converter exatamente em double
unsigned short long double Converter exatamente em long double
unsigned long char Preserva o byte de ordem inferior
unsigned long short Preserva a palavra de ordem inferior
unsigned long long Preserva o padrão de bits; o bit de ordem superior torna-se o bit de sinal
unsigned long long long Extensão de zero
unsigned long unsigned char Preserva o byte de ordem inferior
unsigned long unsigned short Preserva a palavra de ordem inferior
unsigned long unsigned long long Extensão de zero
unsigned long float Converter no representável float mais próximo
unsigned long double Converter exatamente em double
unsigned long long double Converter exatamente em long double
unsigned long long char Preserva o byte de ordem inferior
unsigned long long short Preserva a palavra de ordem inferior
unsigned long long long Preservar dword de ordem inferior
unsigned long long long long Preserva o padrão de bits; o bit de ordem superior torna-se o bit de sinal
unsigned long long unsigned char Preserva o byte de ordem inferior
unsigned long long unsigned short Preserva a palavra de ordem inferior
unsigned long long unsigned long Preservar dword de ordem inferior
unsigned long long float Converter no representável float mais próximo
unsigned long long double Converter no representável double mais próximo
unsigned long long long double Converter no representável long double mais próximo

Confira também

Conversões de atribuição