El tamaño de una variable de tipo
int en memoria depende de cada compilador. Por ejemplo, Las variables de tipo short en mingw me parece que ocupaban 4 bytes, y en el compilador de VS2013 ocupaban 2 bytes (o al revés, no me acuerdo).
Para saber el tamaño de las variables de un cierto tipo, usas algo que se parece a una función: sizeof(tipo o variable) (aunque en realidad no es una función)
Por ejemplo:
#include <iostream>
int main() {
long long variable = 0;
std::cout << "El tipo de variable 'int' ocupa " << sizeof(int) << " bytes" << std::endl;
std::cout << "La variable 'variable' ocupa en memoria RAM " << sizeof(variable) << " bytes" << std::endl;
std::cin.get();
return 0;
}
El resultado saldría (programa compilado en el compilador del VisualStudio 2013):
El tipo de variable 'int' ocupa 4 bytes
La variable 'variable' ocupa en memoria RAM 8 bytes
A la pregunta que inicialmente se ha preguntado en este "post", no, la variable no se convierte automáticamente en tiempo de ejecución cuando se llena. Lo que hace es castearse. Esto quiere decir que si tu representas el número grande como 01001001001100100001001010101101101100001010010101001010010, y lo intentas guardar en una variable de tamaño 4 bytes (32 bits) (y la de antes ocuparía mas de 2 bytes), entonces se tomarían los primeros 32 ceros y unos y se les asignaría la memoria: 01001001001100100001001010
101101101100001010010101001010010Lo que está en negrita son los primeros 32 estados, y el resto es información que
se pierde. Entonces, es como si asignáramos a la variable el valor 101101101100001010010101001010010 en decimal.
Espero que se entienda