Partilhar via


Conversões de tipos Integral assinado

Quando um inteiro assinado é convertido para um inteiro não assinado com tamanho igual ou maior e o valor do inteiro assinado não for negativo, o valor é alterado.A conversão é feita pelo sinal-estendendo o inteiro assinado.Um inteiro assinado é convertido para um inteiro assinado de menor truncando os bits de ordem superior.O resultado é interpretado como um valor não assinado, como mostrado neste exemplo.

int i = -3;
unsigned short u;

u = i; 
printf_s( "%hu\n", u );  // Prints 65533 

Nenhuma informação é perdida quando um inteiro assinado é convertido em um valor flutuante, exceto pelo fato de alguns precision pode ser perdida quando um long int ou unsigned int longo o valor é convertido em um float valor.

A tabela a seguir resume as conversões de tipos integrais assinados.Esta tabela presume que o char tipo é assinado por padrão.Se você usar uma opção de tempo de compilação para alterar o padrão para o char para não assinado, as conversões de tipos fornecidas na conversões de tipos inteiro sem sinal tabela para o unsigned char tipo aplicam-se em vez das conversões na tabela a seguir, as conversões de tipos integrais assinado.

Conversões de tipos assinados Integral

From

Para

Método

char1

short

Estender o sinal

char

long

Estender o sinal

char

unsigned char

Preservar o padrão; função perde o bit de ordem superior como bit de sinal

char

unsigned short

Estender sinal para curto; converter curto para unsigned short

char

unsigned long

Estender sinal para longo; converter longo paraunsigned long

char

float

Estender sinal para longo; converter longo para float

char

double

Estender sinal para longo; converter longo para duplo

char

long double

Estender sinal para longo; converter longo para duplo

short

char

Preservar o byte de ordem inferior

short

long

Estender o sinal

short

unsigned char

Preservar o byte de ordem inferior

short

unsigned short

Preservar o padrão de bits; função perde o bit de ordem superior como bit de sinal

short

unsigned long

Estender sinal para longo; converter longo paraunsigned long

short

float

Estender sinal para longo; converter longo para float

short

double

Estender sinal para longo; converter longo para duplo

short

long double

Estender sinal para longo; converter longo para duplo

long

char

Preservar o byte de ordem inferior

long

short

Preservar a palavra de ordem inferior

long

unsigned char

Preservar o byte de ordem inferior

long

unsigned short

Preservar a palavra de ordem inferior

long

unsigned long

Preservar o padrão de bits; função perde o bit de ordem superior como bit de sinal

long

float

Representar como float.Se longo não pode ser representado exatamente, alguns precisão é perdida.

long

double

Representar como double.Se longo não pode ser representada exatamente como um double, alguns precisão é perdida.

long

long double

Representar como double.Se longo não pode ser representada exatamente como um double, alguns precisão é perdida.

1.Todos os char entradas pressupõem que o char tipo é assinado por padrão.

Específicos do Microsoft

Para o compilador C Microsoft 32 bits, um número inteiro é equivalente a uma longo.Conversão de um int valor continua o mesmo para uma longo.

Específicos do Microsoft final

Consulte também

Conceitos

Conversões de atribuição