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 com sinal é convertido em um inteiro ou um tipo de ponto flutuante, o valor fica inalterado quando é representável no tipo de resultado.
Quando um inteiro com sinal é convertido em um inteiro de maior tamanho, o valor terá extensão de sinal. 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:
int i = -3;
unsigned short u;
u = i;
printf_s( "%hu\n", u ); // Prints 65533
Quando o compilador converte um inteiro com 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.
Para obter informações sobre os tamanhos para os tipos integral e de ponto flutuante, confira Armazenamento de tipos básicos.
A tabela a seguir resume as conversões de tipos integrais com sinal. Ela pressupõe que, por padrão, o tipo char tem sinal. Se você usar uma opção de tempo de compilação para alterar o padrão do tipo char para sem sinal, as conversões fornecidas na tabela Conversões de tipos integrais sem sinal para o tipo unsigned char serão aplicadas no lugar das conversões indicadas nesta tabela.
Seção específica da Microsoft
No compilador da Microsoft, int e long são tipos distintos, mas equivalentes. A conversão de um valor int é realizada da mesma maneira que a conversão de um long.
Fim da seção específica da Microsoft
Tabela de conversões de tipos integrais assinados
| De | Para | Método |
|---|---|---|
char
1 |
short |
Extensão de sinal |
char |
long |
Extensão de sinal |
char |
long long |
Extensão de sinal |
char |
unsigned char |
Preserva o padrão; o bit de ordem superior perde a função como bit de sinal |
char |
unsigned short |
Extensão de sinal para short; converte short em unsigned short |
char |
unsigned long |
Extensão de sinal para long; converte long em unsigned long |
char |
unsigned long long |
Extensão de sinal para long long; converte long long em unsigned long long |
char |
float |
Representar exatamente como float |
char |
double |
Representar exatamente como double |
char |
long double |
Representar exatamente como long double |
short |
char |
Preserva o byte de ordem inferior |
short |
long |
Extensão de sinal |
short |
long long |
Extensão de sinal |
short |
unsigned char |
Preserva o byte de ordem inferior |
short |
unsigned short |
Preserva o padrão de bits; o bit de ordem superior perde a função como bit de sinal |
short |
unsigned long |
Extensão de sinal para long; converte long em unsigned long |
short |
unsigned long long |
Extensão de sinal para long long; converte long long em unsigned long long |
short |
float |
Representar exatamente como float |
short |
double |
Representar exatamente como double |
short |
long double |
Representar exatamente como long double |
long |
char |
Preserva o byte de ordem inferior |
long |
short |
Preserva a palavra de ordem inferior |
long |
long long |
Extensão de sinal |
long |
unsigned char |
Preserva o byte de ordem inferior |
long |
unsigned short |
Preserva a palavra de ordem inferior |
long |
unsigned long |
Preserva o padrão de bits; o bit de ordem superior perde a função como bit de sinal |
long |
unsigned long long |
Extensão de sinal para long long; converte long long em unsigned long long |
long |
float |
Representar como float. Se long não puder ser representado exatamente, um pouco da precisão será perdido. |
long |
double |
Representar exatamente como double |
long |
long double |
Representar exatamente como long double |
long long |
char |
Preserva o byte de ordem inferior |
long long |
short |
Preserva a palavra de ordem inferior |
long long |
long |
Preservar dword de ordem inferior |
long long |
unsigned char |
Preserva o byte de ordem inferior |
long long |
unsigned short |
Preserva a palavra de ordem inferior |
long long |
unsigned long |
Preservar dword de ordem inferior |
long long |
unsigned long long |
Preserva o padrão de bits; o bit de ordem superior perde a função como bit de sinal |
long long |
float |
Representar como float. Se long long não puder ser representado exatamente, um pouco da precisão será perdido. |
long long |
double |
Representar como double. Se long long não puder ser representado exatamente como um double, um pouco da precisão será perdido. |
long long |
long double |
Representar como double. Se long long não puder ser representado exatamente como um double, um pouco da precisão será perdido. |
1 Todas as entradas de char pressupõem que, por padrão, o tipo char tem sinal.