Gama de tipos numéricos em C ++

Pode parecer estranho, mas padrão do C ++ não diz exatamente como um grande número de cada um dos tipos de dados podem acomodar. O padrão de fala apenas para o tamanho relativo de cada tipo de dados. Por exemplo, ele diz que o máximo long int é pelo menos tão grande como a máxima int.

Os autores do C ++ não estavam tentando ser misterioso. Eles simplesmente 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 que executam sistemas operacionais diferentes.

No entanto, é útil saber os limites para a sua implementação em particular. A tabela mostra o tamanho de cada tipo de número em um PC com Windows usando o compilador / gcc Code :: Blocks.

Gama de tipos numéricos no bloco de código :: / gcc
VariávelTamanho (bytes)PrecisãoAlcance
baixo2exato-32.768-32.767
int4exato2,147,483,648 a 2.147.483.647
longo4exato-2,147,483,648 a 2.147.483.647
int long long8exato-9.223.372.036.854.775.808 para 9.223.372.036.854.775.807
flutuador47 dígitos± 3.4028 x 10 ±38
longo816 dígitos± 1.7977 x 10 ±308
long double1219 dígitos± 1.1897 x 10 ±4932

A tentativa de calcular um número que é além do alcance de seu tipo é conhecido como um transbordar. O padrão C ++ geralmente deixa os resultados de um estouro como indefinido. Essa é outra maneira que os definidores de C ++ permaneceu flexível.

No PC, um ponto flutuante estouro resulta em uma exceção, que se não for tratada fará com que o programa deixe de funcionar. Tão ruim quanto isso soa, um integer overflow é pior - C ++ silenciosamente gera um valor incorreto sem reclamar.

menu