¿Qué tipo para un entero de más de 4 bytes?
Pregunta
Tengo que usar enteros sin signo que pueden abarcar más de 4 bytes, ¿qué tipo debo usar?
PD Perdón por el " noobismo " pero eso es todo: D
NB: necesito números enteros porque tengo que hacer divisiones y cuidar solo las partes enteras y de esta manera int son útiles
Solución
largo largo , entero de 64 bits ... aquí puede encontrar alguna referencia sobre los tipos de datos y rangos ...
Otros consejos
Simplemente incluya < stdint.h > y use int64_t y uint64_t (ya que quiere sin firmar, quiere uint64_t).
Hay varias otras variantes útiles en ese encabezado, como las variantes mínimas (uint_least64_t es un tipo con al menos 64 bits) y las variantes rápidas (uint_fast64_t es el tipo entero más rápido con al menos 64 bits). También son muy útiles intptr_t / uintptr_t (lo suficientemente grande como para un puntero nulo *) e intmax_t / uintmax_t (tipo más grande).
Y si por alguna razón su compilador no tiene un < stdint.h > (dado que IIRC es un estándar C, no un C ++), puede usar boost / cstdint.hpp (que puede usar incluso si tiene un < stdint.h > ;, ya que en ese caso simplemente debe reenviar al encabezado del compilador) .
Elija:
long long
(& # 8211; 9,223,372,036,854,775,808 a 9,223,372,036,854,775,807)
unsigned long long
: (0 a 18,446,744,073,709,551,615)
Si necesita enteros realmente largos (precisión arbitraria), también puede probar la biblioteca gmp , que también proporciona una interfaz basada en la clase C ++.
unsigned long long: tiene al menos 64 bits de longitud