Quel type pour un entier de plus de 4 octets?
Question
Je dois utiliser des entiers non signés pouvant couvrir plus de 4 octets, quel type dois-je utiliser?
PS Désolé pour le " noobism " mais c'est tout: D
NB: j’ai besoin d’entiers car je dois faire des divisions et ne me préoccuper que des parties entières. Ainsi, int sont utiles
La solution
long long , entier 64 bits ... ici , vous trouverez des références sur les types de données et les plages ...
Autres conseils
Incluez simplement < stdint.h > et utilisez int64_t et uint64_t (puisque vous voulez non signé, vous voulez uint64_t).
Il existe plusieurs autres variantes utiles dans cet en-tête, comme les plus petites variantes (uint_least64_t est un type d'au moins 64 bits) et les variantes rapides (uint_fast64_t est le type entier le plus rapide avec au moins 64 bits). Intptr_t / uintptr_t (assez grand pour un pointeur vide) et intmax_t / uintmax_t (type le plus grand) sont également très utiles.
Et si, pour une raison quelconque, votre compilateur n’a pas de < stdint.h > (IIRC étant une norme C et non une norme C ++), vous pouvez utiliser boost / cstdint.hpp (que vous pouvez utiliser même si vous avez un < stdint.h > ;, car dans ce cas, il devrait tout simplement être transmis à l'en-tête du compilateur) .
Faites votre choix:
long long
(& # 8211; 9 223 372 036 854 775 808 à 9 223 372 036 854 755 807)
unsigned long long
: (0 à 18 446 744 073 709 551 615)
Si vous avez besoin d’entiers très longs (précision arbitraire), vous pouvez également essayer la bibliothèque gmp , qui fournit également une interface basée sur la classe C ++.
unsigned long long - sa longueur est d'au moins 64 bits