Visual C++ 64 位元移轉時常見的問題
當您使用 Microsoft C++ 編譯程式 (MSVC) 建立要在 64 位 Windows 作業系統上執行的應用程式時,您應該注意下列問題:
int
和long
是 64 位元 Windows 作業系統上的 32 位元值。 對於您要為 64 位元平台進行編譯的程式,您應小心不要將指標指派給 32 位元變數。 指標在 64 位元平台上是 64 位元的,如果您將指標指派給 32 位元變數,將會截斷指標值。size_t
、time_t
和ptrdiff_t
是 64 位 Windows 作業系統上的 64 位值。time_t
是 Visual Studio 2005 和更早版本中 32 位 Windows 操作系統上的 32 位值。time_t
現在預設為 64 位元整數。 如需詳細資訊,請參閱 時間管理。您應注意程式碼在何處取用
int
值,並將其視為size_t
或time_t
值來處理。 此數值可能會成長而大於 32 位元數值,且資料在傳回至int
儲存體時將會截斷。
%x (十六進位 int
格式) printf
修飾詞在 64 位元 Windows 作業系統上將無法如預期運作。 它只會處理傳遞給它之值的前 32 個位元。
使用 %I32x 可顯示十六進位格式的 32 位元整數類型。
使用 %I64x 顯示十六進位格式的 64 位元整數類型。
%p (指標的十六進位格式) 在 64 位元 Windows 作業系統上將如預期運作。
如需詳細資訊,請參閱