Linguagem C - Gerenciando inteiros de 64 bits
Basicamente na linguagem C, um número não assinado acima de 32 bits não pode exceder o valor de 4.294.967.295.
Você pode achar que precisa manipular números maiores e, para isso, é necessário que esses números sejam codificados em 64 bits.
No entanto, isso não é tratado da mesma maneira como um inteiro comum. Eles devem ser definidos de forma diferente.
Inteiro não assinado de 64 bits
Tipo: longo longo não assinado
Formatação para exibição: % llu
Sufixo para definir uma constante: ULL
Exemplo:
// Atribui o valor em 4294967296 unsigned long long a = 4294967296ULL; // Mostra o valor printf ("% llu", a);
Inteiro de 64 bits assinado
Tipo: longo longo
Formatação para exibição: % lld
Sufixo para definir uma constante: LL
Exemplo:
// Atribuir o valor em 4294967296 long long a = 4294967296LL; // Mostra o valor printf ("% lld", a);
Usando um sufixo incomum para definir um valor constante
Não assinado por muito tempo a = 4294967296
Seu compilador lhe avisará que esse número é muito grande para o tipo "longo". Este conceito está diretamente relacionado à arquitetura de processadores de 32 bits. Um processador de 32 bits é limitado e seu compilador padrão tentará ajustar os números em um registro. Mas com um sufixo como LL e ULL, seu compilador armazenará seu número em 2 registros, isto é, em 64 bits, permitindo, portanto, números consideravelmente maiores.