O tamanho de variáveis ​​c ++

C ++ permite expandir em tipos de variáveis ​​inteiros, adicionando as seguintes descritores na frente: const

, não assinado, curto, ou o mais longo. Assim você poderia declarar algo como o seguinte:

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.

Tipos de variáveis ​​The Common C ++
TipoDeclarando uma constanteO que é isso
int1Um número de contagem simples, positivo ou negativo.
int não assinado1UUm 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 int1LUma versão potencialmente maior do int. Ele pode usar mais memória, mas tem uma maior
alcance.
int long long1LLUma versão do int isso é
potencialmente ainda maior.
flutuador1.0FUm número real precisão simples.
Duplo1.0Um 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_tL`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.

Gama de tipos numéricos
TipoTamanho [bytes]PrecisãoAlcance
short int2exato&minus-32.768 a 32.767
int4exato&minus-2,147,483,648 a 2.147.483.647
long int4exato&minus-2,147,483,648 a 2.147.483.647
int long long8exato&minus-9,223,372,036,854,775,808 para
9.223.372.036.854.775.807
flutuador47 dígitos+/&minus- 3,4028 * 10+/ -38
Duplo816 dígitos+/&minus- 1,7977 * 10+/ -308
long double1219 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.


Publicações relacionadas