Quiero poder usar números enteros positivos grandes (8 bytes) en mi proyecto, aunque sizeof (unsigned long) rinde 8 en mi sistema, lo leí en la mayoría de los sistemas sin firmar de larga duración tienen solo 4 bytes y decidí dar unsigned long long a go, ya que se garantiza que tendrá al menos 8 bytes.unsigned long long vs unsigned long (portabilidad punto de vista)
Cuanto más lo uso, vi que no es súper portátil también, por ejemplo en algunos sistemas (según el compilador) printf lo formatea con% llu, en algunos lo formatea con% lld.
Mi código solo se ejecutará en máquinas Debian de 64 bits, en las cuales la longitud sin signo será de 8 bytes. La portabilidad no es un gran problema. ¿Es excesivo usar largos largos sin firmar sobre largos sin firmar en estas circunstancias? ¿Hay algún otro beneficio de usar largos largos sin signo sobre largos sin signo?
¿Has probado 'uint64_t'? Está en ' .' –
Mysticial
¿cuál es la ventaja de usarlo durante mucho tiempo sin firmar? –
Se detiene la compilación si no tiene ningún tipo con exactamente 64 bits mientras largo largo a lo largo de tipo más largo. Ambos están presentes en C++ 11, ambos están a menudo presentes como extensión anterior, pero no me sorprendería que uno estuviera a veces presente y no el otro.Si no lo tiene, stdint.h es más fácil de emular (suponiendo que el tipo está presente) que mucho tiempo. – AProgrammer