87 votes

Combien d'octets contient une longueur non signée ?

Combien d'octets sont unsigned long long ? Est-ce la même chose que unsigned long long int ?

85voto

larsmans Points 167484

Résumé : c'est 64 bits, ou plus.

unsigned long long est la même chose que unsigned long long int . Sa taille dépend de la plate-forme, mais est garantie par la norme C (ISO C99) comme étant d'au moins 64 bits. Il n'y a pas de long long en C89, mais apparemment même MSVC le supporte, donc c'est assez portable.

Dans le standard C++ actuel (publié en 2003), il n'y a pas de long long bien que de nombreux compilateurs le prennent en charge en tant qu'extension. La prochaine norme C++0x le supportera et sa taille sera la même qu'en C, donc au moins 64 bits.

Vous pouvez obtenir la taille exacte, en octets (8 bits sur les plateformes typiques) avec l'expression sizeof(unsigned long long) . Si vous voulez exactement 64 bits, utilisez uint64_t qui est défini dans l'en-tête <stdint.h> ainsi qu'un certain nombre de types connexes (disponibles dans C99, C++11 et certains compilateurs C++ actuels).

17voto

Ernest Friedman-Hill Points 56605

La beauté du C++, comme du C, est que la taille de ces choses est définie par l'implémentation, donc il n'y a pas de réponse correcte sans spécifier le compilateur que vous utilisez. Est-ce que ces deux-là sont les mêmes ? Oui. "long long" est un synonyme de "long long int", pour tout compilateur qui accepte les deux.

15voto

Michael Burr Points 181287

Il doit être au moins de 64 bits. Pour le reste, c'est l'implémentation qui décide.

A proprement parler, unsigned long long n'est pas standard en C++ avant la norme C++0x. unsigned long long est un "spécificateur de type simple" pour le type unsigned long long int (ce sont donc des synonymes).

Le site long long L'ensemble de types est également présent dans C99 et était une extension courante des compilateurs C++ avant même d'être normalisée.

3voto

uvts_cvs Points 4163

Utiliser l'opérateur sizeof il vous donnera la taille d'un type exprimé en octet. Un octet correspond à huit bits. Voir le programme suivant :

#include <iostream>

int main(int,char**)
{
 std::cout << "unsigned long long " << sizeof(unsigned long long) << "\n";
 std::cout << "unsigned long long int " << sizeof(unsigned long long int) << "\n";
 return 0;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X