Tamanho de dados: a função sizeof()
C++ é uma linguagem poderosa, e isso não é maneira de falar.Uma prova disso é a responsabilidade que o programador tem com cada byte da memória do computador, através da linguagem C++.
Sempre que declaramos uma variável estamos, diretamente, reservando bytes da memória de sua máquina, e dando acesso ao endereço daquele espaço reservado através do nome da variável.
Existe uma função (bloco de código, pronto para usar) que nos fornece o tamanho de cada tipo de dado que estudamos, é a função: sizeof()
Para saber o tamanho de um dado, basta colocá-lo entre parêntesis no comando: sizeof( variavel )
E ele 'retorna' o tanto de bytes ocupados.
O programa abaixo mostra os valores reservados para cada tipo de variável em meu computador:
#include <iostream> using namespace std; int main() { cout << "Variável 'int' ocupa : " << sizeof(int) << " byte(s)" << endl; cout << "Variável 'char' ocupa : " << sizeof(char) << " byte(s)" << endl; cout << "Variável 'float' ocupa : " << sizeof(float) << " byte(s)" << endl; cout << "Variável 'double' ocupa: " << sizeof(double) << " byte(s)" << endl; cout << "Variável 'bool' ocupa : " << sizeof(bool) << " byte(s)" << endl; return 0; }
Faça no seu e poste nos comentários, isso pode mudar de um sistema operacional para outro.
No meu notebook o resultado foi:
Tipo de dado inteiro: short, long e unsigned
Veja que um inteiro ocupa 4 bytes.Seja pra armazenar o número 0, o 1, o 2112 ou o 2147483647, ele guarda 4 bytes da memória do seu computador. Mas, as vezes isso pode ser desperdício.
Vamos supor que você está trabalhando com um microcontrolador ou quer fazer o sistema de um relógio digital ou timer de microondas. Nesses casos, memória é um recurso RARO e LIMITADÍSSIMO, quanto menos desperdiçarmos, melhor.
A solução é em vez de declarar 'int variavel', fazer:
short variavel;
Pois vai utilizar menos espaço em memória.
E caso esteja fazendo um software pra NASA estudar planetas que estão a bilhões de trilhões de km de distância e precisa usar número gigantescos? Aí você usa o long:
long variavel;
Lembrando que números inteiros são de dois tipos: os negativos e os positivos.
Se você vai trabalhar com idade, por exemplo, não faz sentido trabalhar com números negativos, concorda?
Nesse caso, use variáveis do tipo unsigned:
unsigned variavel;
A extensão numérica de cada tipo é:
short: de -32.768 até +32.767
unsigned short: de 0 até +65,535
int: de -2.147.483.648 até +2.147.483.647
unsigned int: de 0 até 4.294.967.295
long: de -2.147.483.648 até +2.147.483.647
unsigned long: de 0 até 4.294.967.295
Vamos ver quanto de espaço ocupa cada um desses tipos?
O código é:
#include <iostream> using namespace std; int main() { cout << "Variável 'short' ocupa : " << sizeof(short) << " bytes" << endl; cout << "Variável 'unsigned short' ocupa : " << sizeof(unsigned short) << " bytes" << endl; cout << "Variável 'unsigned int' ocupa : " << sizeof(unsigned int) << " bytes" << endl; cout << "Variável 'long' ocupa : " << sizeof(long) << " bytes" << endl; cout << "Variável 'unsigned long' ocupa : " << sizeof(unsigned long) << " bytes" << endl; return 0; }
E o resultado:
Precisão de float e double
Já que estamos falando de variáveis inteiras, seu alcance, tamanho e precisão, vamos revisar novamente as variáveis float e double, usadas para representar números decimais:- float: precisão única, ocupa 4 bytes e vai de 3,4 x 10^(-38) até 3,4x10^38
- double e long double: precisão dupla, ocupam 8 bytes e vão de 1,7 x 10^(-308) até 1,7x10^308
/*programa que calcula o tamanho dos tipos variáveis*/
ResponderExcluir#include
using namespace std;
int main()
{
cout << "A variavel 'int' ocupa: " << sizeof(int)<<"Byte(s)" << endl;
cout << "A variavel 'char' ocupa: " << sizeof(char)<<"Byte" << endl;
cout <<"A variavel 'float' ocupa: " << sizeof(float)<<"Byte" << endl;
cout << "A variavel 'double' ocupa: " << sizeof(double)<<"Byte" << endl;
cout << "A variavel 'bool' ocupa: " << sizeof(bool)<<"Byte" << endl;
cout << "A variavel 'short' ocupa: " << sizeof(short)<<"Byte" << endl;
cout << "A variavel 'unsigned short' ocupa " <<sizeof(unsigned short) <<"Byte" << endl;
cout << "A variavel 'unsigned int' ocupa" <<sizeof(unsigned int) <<"Byte" << endl;
cout << "A variavel 'long' ocupa: " << sizeof(long)<<"Byte" << endl;
cout << "A variavel 'unsigned long' ocupa " <<sizeof(unsigned long) <<"Byte" << endl;
return 0;
}
Seu site é muito bom, parabéns.
ResponderExcluirÓtimo trabalho. Preciso de ajuda: no meu caso, os acentos não saem de forma correta. Podem ajudar?
ResponderExcluirProvavelmente isso está acontecendo por conta da linguagem padrão das IDEs, que é o ingles. Dependendo da IDE que você estiver utilizando, você consegue escrever uma função que muda a língua do ambiente para o português. Recomendo você pesquisar sobre.
Excluir