2008-09-02 80 views
40

在Visual C++中,DWORD只是一個無符號長整數,與機器,平臺和SDK相關。但是,由於DWORD是雙字(即2 * 16),在64位體系結構上還是32位的DWORD?32位和64位代碼的DWORD有多大?

+6

DWORD不是機器,平臺,也不是SDK相關的。 – 2013-07-16 17:40:08

+0

這是一個挑剔的問題,但從技術上講這個問題適用於C或C++,最好是移除C++標記或添加C標記,但我不確定哪個更好。 – jrh 2017-12-26 21:05:20

回答

51

實際上,在32位計算機上,一個單詞是32位的,但DWORD類型是來自16位舊版的遺留物。

爲了更方便地將程序移植到較新的系統,Microsoft已決定所有舊類型不會更改大小。

你可以在這裏找到的官方名單: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx

所有這一切與過渡改變從32位到64位與_Ptr結束依賴於平臺的類型(DWORD_PTR將在32位32位位Windows和64位Windows上的64位)。

3

沒有...在所有Windows平臺上DWORD是32位。 LONGLONG或LONG64用於64位類型。

+0

它與Windows無關,它是英特爾術語 – Abyx 2013-07-16 17:48:10

+2

@Abyx:typedef DWORD是非常Windows的。 – rubenvb 2013-07-16 19:53:49

+2

@rubenvb,哦,爲什麼它被稱爲`DWORD`,而不是其他類似`QBYTE`或`DUBWD`的東西? – Abyx 2013-07-16 20:47:41

14

它被定義爲:

typedef unsigned long  DWORD; 

然而,根據MSDN:

在32位的平臺,long是 代名詞INT。

因此,DWORD是32位操作系統上的32位。有一個單獨的64bit DWORD的定義:

typdef unsigned _int64 DWORD64; 

希望有所幫助。

-2

:)字現代處理器是32位或64位。這只是內存指針的長度(這是ALU的容量)。

但是歷史上x86「word」是16位(而不是32位)。因此歷史上以x86爲目標的Microsoft庫將DWORD定義爲無符號長整型,即「機器指針大小」。

這就是所有的孩子。以供參考,請參閱Wikipedia

+1

(1)這是一個錯誤的維基百科頁面的鏈接。 (2)這個問題不是關於計算機體系結構的話,而是關於微軟的'DWORD'類型。 – 2013-07-16 17:42:23

-4

呼叫長,dword32,dword64 ......任何你想要的,但 一個字節爲8位 一個字是2個字節 一個DWORD(雙字)爲2個字 一個四字(四字)爲4詞語

在32或64位系統,如LONG或INT別名可以變化,但是一個DWORD仍然是一個雙字

-1

8比特是一個字節。 2個字節是一個字。雙字或DWORD是4個字節或2個字。