O tamanho de variáveis c ++
C ++ permite expandir em tipos de variáveis inteiros, adicionando as seguintes descritores na frente: const
Conteúdo
unsigned long ulnVariable- int
UMA const variável não pode ser modificada. Todos os números são implicitamente const. Assim, 3 é do tipo const int, enquanto que 3,0 é um const double, e ‘3’ é um const char.
Video: Curso C++ - Aula 11 - Manipulando Variáveis
A não assinado variável pode assumir valores não negativos só- no entanto, ele pode lidar com um número aproximadamente duas vezes tão grande quanto seu irmão assinado. assim, uma int não assinado tem um intervalo de 0 a 4 bilhões (em oposição a regular signedint‘S gama de -2.000-2.000 milhões).
C ++ permite que você declare um short int e uma long int. Por exemplo, uma short int ocupa menos espaço, mas tem um alcance mais limitado do que um regular int, enquanto que um long int toma mais espaço de armazenamento e tem uma gama significativamente maior.
o int é assumido. Assim, as duas declarações seguintes são ambos aceitos e completamente equivalentes:
int longo lnVar1- // declarar um longo intlong lnVar2- // também uma longa int INT é assumido
O C ++ 2011 Standard mesmo define um int long long e uma long double. Estes são apenas como long int e Duplo, respectivamente, só que mais assim - mais precisão e alcance maior.
Video: Curso C++ - Aula 16 - Modificadores de Tipo
Não são permitidas todas as combinações. Por exemplo, não assinado só pode ser aplicado aos tipos de contagem int e Caracteres. A tabela a seguir mostra as combinações legais e seu significado, juntamente com a forma de declarar uma constante desse tipo.
Tipo | Declarando uma constante | O que é isso |
---|---|---|
int | 1 | Um número de contagem simples, positivo ou negativo. |
int não assinado | 1U | Um número de contagem não-negativo. |
short int | - | Uma versão potencialmente menor do int. Ele usa menos memória, mas tem um mais limitado alcance. |
long int | 1L | Uma versão potencialmente maior do int. Ele pode usar mais memória, mas tem uma maior alcance. |
int long long | 1LL | Uma versão do int isso é potencialmente ainda maior. |
flutuador | 1.0F | Um número real precisão simples. |
Duplo | 1.0 | Um número real de precisão dupla. |
long double | - | Um número de ponto flutuante potencialmente maior. No PC, long double é o tamanho nativo para números interno para o processador numérico. |
Caracteres | ‘C’ | Uma única Caracteres variável armazena um caractere único. Não é adequado para aritmética. |
wchar_t | L`c’ | Uma grande personagem. Usado para armazenar conjuntos de caracteres maiores, como ideogramas chineses e símbolos Kanji. Também conhecido como UTF ou Unicode. |
Até que ponto os números de gama?
Pode parecer estranho, mas padrão do C ++ não diz exatamente como um grande número de cada tipo de dados pode acomodar. A norma aborda apenas o tamanho relativo de cada tipo de variável. Por exemplo, ele diz que o máximo long int é pelo menos tão grande como a máxima int.
O Standard 2011 diz um pouco mais do que isso - por exemplo, um long int deve ser de pelo menos 32 bits - mas ainda não especifica o tamanho de cada tipo de variável.
Os autores do C ++ não estavam tentando ser misterioso. Eles queriam permitir que o compilador para implementar o código mais rápido absoluta possível para a máquina base. O padrão foi projetado para funcionar para todos os diferentes tipos de processadores, rodando diferentes sistemas operacionais.
De facto, o tamanho de um padrão int tem mudado ao longo das últimas décadas. Antes de 2000, o padrão int na maioria dos computadores foi de 2 bytes e tinha uma gama de mais ou menos 64.000. Por volta de 2000, o tamanho de texto básico sobre os processadores Intel mudou para 32 bits. A maioria dos compiladores mudado para o padrão int de hoje - é 4 bytes e tem um alcance de mais ou menos 2 bilhões.
A tabela a seguir fornece o tamanho e a gama de cada tipo de variável na maioria dos outros compiladores significado para um processador Intel correndo num sistema operativo de 32 bits.
Tipo | Tamanho [bytes] | Precisão | Alcance |
---|---|---|---|
short int | 2 | exato | &minus-32.768 a 32.767 |
int | 4 | exato | &minus-2,147,483,648 a 2.147.483.647 |
long int | 4 | exato | &minus-2,147,483,648 a 2.147.483.647 |
int long long | 8 | exato | &minus-9,223,372,036,854,775,808 para 9.223.372.036.854.775.807 |
flutuador | 4 | 7 dígitos | +/&minus- 3,4028 * 10+/ -38 |
Duplo | 8 | 16 dígitos | +/&minus- 1,7977 * 10+/ -308 |
long double | 12 | 19 dígitos | +/&minus-1,1897 * 10+/ -4932 |
A tentativa de calcular um número que está fora do alcance de um tipo de variável é conhecido como um transbordar. O padrão C ++ geralmente deixa os resultados de um excesso indefinido. Essa é outra maneira que os inventores de C ++ queria deixar a linguagem flexível para que o código de máquina gerado seria o mais rápido possível.
No PC, um estouro de ponto flutuante gera uma exceção que, se não for tratada, vai fazer com que seu programa deixe de funcionar. Tão ruim quanto isso soa, um estouro de inteiros é ainda pior - C ++ gera um resultado incorreto sem reclamar.