Combien d'octets sont unsigned long long
? Est-ce la même chose que unsigned long long int
?
Réponses
Trop de publicités?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).
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.
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.
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;
}