58 votes

Visual C ++: Quelle est la taille d'un DWORD avec du code 32 et 64 bits?

Dans Visual C ++, un DWORD est simplement un long non signé qui dépend de la machine, de la plate-forme et du SDK. Cependant, comme DWORD est un double mot (c'est-à-dire 2 * 16), un DWORD est-il toujours 32 bits sur des architectures 64 bits?

70voto

Nir Points 18250

En fait, sur les ordinateurs 32 bits d'un mot de 32 bits, mais le type DWORD, est un vestige de l'époque des 16 bits.

Afin de faciliter le port des programmes pour les systèmes plus récents, Microsoft a décidé de toutes les formes ne changent pas de taille.

Vous pouvez trouver la liste officielle ici: http://msdn.microsoft.com/en-us/library/aa383751(SV.85).aspx

Toutes la plate-forme des types dépendants qui a changé avec le passage de 32 bits à 64 bits de fin avec _PTR (DWORD_PTR sera de 32 bits sur Windows 32 bits et 64 bits sur Windows 64 bits).

18voto

Mark Ingram Points 24995

Il est défini comme:

 typedef unsigned long       DWORD;
 

Cependant, selon le MSDN:

Sur les plates-formes 32 bits, long est synonyme d'int.

Par conséquent, DWORD est 32 bits sur un système d'exploitation 32 bits. Il existe une définition distincte pour un fichier DWORD 64 bits:

 typdef unsigned _int64 DWORD64;
 

J'espère que cela pourra aider.

12voto

Rob Walker Points 25840

Non ... sur toutes les plateformes Windows, DWORD est en 32 bits. LONGLONG ou LONG64 est utilisé pour les types 64 bits.

0voto

Artem Tikhomirov Points 4501

:) Le mot sur les processeurs modernes est soit 32 bits, soit 64 bits. C'est simplement la longueur du pointeur de mémoire (qui correspond à la capacité de l'ALU).

Mais historiquement x86 "mot" est de 16 bits (au lieu de 32). Ainsi, les bibliothèques Microsoft qui ciblent historiquement x86, définissent DWORD comme non signé long, c’est-à-dire "taille du pointeur de la machine".

C'est tous les enfants. Pour référence future, voir Wikipedia .

0voto

Rokman Points 9

8 bits est un octet. 2 octets est un mot. Double mot ou DWORD est de 4 octets ou 2 mots.

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