<aside>
Conhecimentos necessários:
Variáveis, entrada e saída de dados, estruturas condicionais e estruturas repetitivas
</aside>
<aside>
Navegação
</aside>
Bom… lembra dos tipos de dados que mencionei anteriormente (int, float, double e char)? Eles não são todos os tipos…
Para as variáveis do tipo int e double, podemos dar uma tunada nelas, deixando elas mais leves ou grandes e poderosas… que seriam os…
Basicamente, existem 4:
Cada variável possui um peso em bytes, que é a medida de memória do computador. Cada variável possui seus limites, números máximos que mínimos que elas suportam guardar. Dito isso, unsigned faz a variável não conseguir armazenar números negativos, mas pode armazenar números positivos maiores. Já o long, faz a variável conseguir armazenar números maiores, mas ela fica mais pesada. E o short é o oposto, faz a variável conseguir armazenar números não tão grandes com o objetivo de ficar mais leve.
Esse modificadores só se aplicam para o tipo int, tirando o long, que também se aplica para o double.
O peso de cada variável pode variar dependendo do sistema. Por isso, aqui há duas tabelas:
| Tipo de variável | Peso (bytes) | Valor mínimo | Valor máximo | Precisão decimal |
|---|---|---|---|---|
| void | 0 | Não existe | Não existe | Não existe |
| char | 1 | Não existe | Não existe | Não existe |
| short int | 2 | -32.768 | 32.767 | Não existe |
| int | 4 | -2.147.483.648 | 2.147.483.647 | Não existe |
| unsigned int | 4 | 0 | 4.294.967.295 | Não existe |
| long int | 4 | -2.147.483.648 | 2.147.483.647 | Não existe |
| unsigned long int | 4 | 0 | 4.294.967.295 | Não existe |
| long long int | 8 | -9.223.372.036.854.775.808 | 9.223.372.036.854.775.807 | Não existe |
| unsigned long long int | 8 | 0 | 18.446.744.073.709.551.615 | Não existe |
| float | 4 | $\approx 2^{-126}$ | $\approx 2^{126} -1$ | $\approx 7$ dígitos |
| double | 8 | $\approx 2^{-1022}$ | $\approx 2^{1022} - 1$ | $\approx 15$ dígitos |
| long double | 8 | $\approx 2^{-1022}$ | $\approx 2^{1022} - 1$ | $\approx 15$ dígitos |
| Tipo de variável | Peso (bytes) | Valor mínimo | Valor máximo | Precisão decimal |
|---|---|---|---|---|
| void | 0 | Não existe | Não existe | Não existe |
| char | 1 | Não existe | Não existe | Não existe |
| short int | 2 | -32.768 | 32.767 | Não existe |
| int | 4 | -2.147.483.648 | 2.147.483.647 | Não existe |
| unsigned int | 4 | 0 | 4.294.967.295 | Não existe |
| long int | 8 | -9.223.372.036.854.775.808 | 9.223.372.036.854.775.807 | Não existe |
| unsigned long int | 8 | 0 | 18.446.744.073.709.551.615 | Não existe |
| long long int | 8 | -9.223.372.036.854.775.808 | 9.223.372.036.854.775.807 | Não existe |
| unsigned long long int | 8 | 0 | 18.446.744.073.709.551.615 | Não existe |
| float | 4 | $\approx 2^{-126}$ | $\approx 2^{126} -1$ | $\approx 7$ dígitos |
| double | 8 | $\approx 2^{-1022}$ | $\approx 2^{1022} - 1$ | $\approx 15$ dígitos |
| long double | 16 | $\approx 2^{-16382}$ | $\approx 2^{16382} - 1$ | $\approx 18$ dígitos |
Se, por algum motivo, você tentar colocar um número maior do que a variável suporta, ela dará o que chamamos de overflow e guardará, tecnicamente, infinito (ou um valor negativo) como valor.
Caso queira medir o tamanho de alguma coisa, você pode usar a função sizeof(). Dessa forma:
sizeof(int) mede o tamanho de um int.
sizeof(char) mede o tamanho de um char.
Obs.: long double pode não ser compatível com todos os compiladores.
A memória RAM é separada em 3 partes: Heap, Stack e Kernel Space.
É o pedaço da memória que programas usam. Se um programa precisar de 1 GB de RAM, por exemplo, ele usaria memória desse heap.
É onde as variáveis que criamos normalmente ficam salvas, além de outras coisas simples para o funcionamento do programa, como a contagem de linhas. Representa um espaço bem pequeno da memória, cerca de 1 MB a 8 MB.
É a parte da memória que é reservada para o sistema, apenas. Nenhum outro programa consegue usar. No máximo, conseguem visualizar.
| Nome da unidade | Peso | Sigla |
|---|---|---|
| Bit (binary digit) | Um dígito do código binário | b |
| Byte | 8 bits | B |
| Kilobyte | 1024 B | KB |
| Megabyte | 1024 KB | MB |
| Gigabyte | 1024 MB | GB |
| Terabyte | 1024 GB | TB |
| Petabyte | 1024 TB | PB |
| --- | --- | --- |
| --- | --- | --- |