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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top