Pergunta

Eu tenho que usar inteiros sem sinal que poderiam se estendem a mais de 4 bytes, que tipo devo usar?

PS Desculpem o "noobism" mas é isso: D

NB: Eu preciso de números inteiros, porque eu tenho que fazer divisões e cuidado apenas para as peças inteiras e desta forma int são úteis

Foi útil?

Solução

long long , 64 bit inteiro ... aqui pode encontrar alguma referência sobre os tipos de dados e varia ...

Outras dicas

Basta incluir e uso int64_t e uint64_t (desde que você quer sem assinatura, você quer uint64_t).

Existem várias outras variantes úteis no cabeçalho que, como a pelo menos variantes (uint_least64_t é um tipo com, pelo menos, 64 bits) e as variantes rápidos (uint_fast64_t é o tipo mais rápido inteiro com, pelo menos, 64 bits). Também muito úteis são intptr_t / uintptr_t (grande o suficiente para um * ponteiro void) e intmax_t / uintmax_t (maior tipo).

E se por algum motivo o seu compilador não tem um (desde IIRC é um padrão C, não um C ++ um), você pode usar Boost boost / cstdint.hpp (que você pode usar, mesmo se você tem um , uma vez que nesse caso ele deve simplesmente para a frente para o cabeçalho do compilador).

Faça a sua escolha:

long long (-9,223,372,036,854,775,808 para 9,223,372,036,854,775,807)

unsigned long long: (0 a 18,446,744,073,709,551,615)

Se precisar de números inteiros muito longos (de precisão arbitrária), você também pode tentar a biblioteca gmp , que também fornece a ++ interface baseada classe C.

unsigned long long - é pelo menos 64 bits de comprimento

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top