Partilhar via


Conversões de tipos Integral não assinado

Um inteiro sem sinal é convertido para um número menor inteiro não assinado ou assinado truncando os bits de ordem superior, ou para um mais não assinado ou assinado inteiro, estendendo a zero (consulte a conversões de tipos inteiro sem sinal tabela).

Quando o valor com tipo integral é rebaixado para um inteiro assinado com tamanho menor, ou um inteiro sem sinal é convertido para o inteiro assinado de seu correspondente, o valor é inalterado, se ele pode ser representado no novo tipo.No entanto, o valor que representa as alterações se o bit de sinal for definido, como no exemplo a seguir.

int j;
unsigned short k = 65533;

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

Se ele não pode ser representado, o resultado é definidos na implementação.Consulte Conversões de conversão de tipo para obter informações sobre o tratamento do compilador C Microsoft do rebaixamento de inteiros.Os mesmos resultados comportamento de conversão de inteiro ou de tipo para o inteiro a projeção.

Valores não assinados são convertidos de modo que preserva seu valor e, portanto, não é representáveis diretamente no c.A única exceção é uma conversão de unsigned long para float, que no máximo perde os bits de ordem baixa.Caso contrário, valor será preservado, sinal ou sem sinal.Quando um valor de tipo integral é convertido para flutuante, e o valor está fora do intervalo representáveis, o resultado é indefinido.(Consulte Armazenamento de tipos básicos para obter informações sobre o intervalo para os tipos integrais e de ponto flutuante.)

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

Conversões de tipos não assinados Integral

From

Para

Método

unsigned char

char

Preservar o padrão de bits; bit de ordem superior torna-se o bit de sinal

unsigned char

short

Estender a zero

unsigned char

long

Estender a zero

unsigned char

unsigned short

Estender a zero

unsigned char

unsigned long

Estender a zero

unsigned char

float

Converter em longo; converter longo para float

unsigned char

double

Converter em longo; converter longo para duplo

unsigned char

long double

Converter em longo; converter longo para duplo

unsigned short

char

Preservar o byte de ordem inferior

unsigned short

short

Preservar o padrão de bits; bit de ordem superior torna-se o bit de sinal

unsigned short

long

Estender a zero

unsigned short

unsigned char

Preservar o byte de ordem inferior

unsigned short

unsigned long

Estender a zero

unsigned short

float

Converter em longo; converter longo para float

unsigned short

double

Converter em longo; converter longo para duplo

unsigned short

long double

Converter em longo; converter longo para duplo

unsigned long

char

Preservar o byte de ordem inferior

unsigned long

short

Preservar a palavra de ordem inferior

unsigned long

long

Preservar o padrão de bits; bit de ordem superior torna-se o bit de sinal

unsigned long

unsigned char

Preservar o byte de ordem inferior

unsigned long

unsigned short

Preservar a palavra de ordem inferior

unsigned long

float

Converter em longo; converter longo para float

unsigned long

double

Converter diretamente ao duplo

unsigned long

long double

Converter em longo; converter longo para duplo

Específicos do Microsoft

Para o compilador C Microsoft 32 bits, o unsigned int tipo será equivalente do unsigned long tipo.Conversão de um unsigned int valor procede da mesma forma como a conversão de um unsigned long.Conversões de unsigned long valores para float não são precisos, se o valor que está sendo convertido é maior do que o positivo máximo assinado longo valor.

Específicos do Microsoft final

Consulte também

Conceitos

Conversões de atribuição