Como vimos nas aulas anteriores, armazenar números grandes no computador pode ser problemático, gerando resultados incorretos. Isso acontece por que cada tipo primitivo (char, int, float, double) possui uma quantidade de memória específica para guardar um dado.
O que fazer então para armazenar valores maiores que precisam de mais memória do que um tipo primitivo possui?
Uma solução muito simples é utilizar o operador long.
Já vimos o operador short, que reduz a quantidade de memória de uma variável do tipo int pela metade (para 2 bytes). O operador long é semelhante, porém com efeito contrário. O operador long dobra a quantidade de memória disponível para nossa variável.
Como até algumas décadas atrás o tipo primitivo int possui 2 bytes de memória, com o operador long a variável passava a ocupar 4 bytes de memória.
long int valor;
Hoje, com o avanço das tecnologias, não há diferença entre int e long int uma vez que nas arquiteturas modernas o tipo int já ocupa 4 bytes.
Assim, podemos utilizar o operador long duas vezes. Dessa forma, nossa variável int ocupará agora 8 bytes de memória.
long long int valor;
Porém há um detalhe importante aqui. Enquanto o tipo int é impresso na tela usando o %d, para imprimir um número long long int precisamos usar o %lld (long long decimal) ou %lli (long long integer).
Valeu!!!