Visual C 64 位遷移的常見問題

2021-08-26 06:53:02 字數 694 閱讀 2589

用 visual c++ 建立在 64 位 windows 作業系統中執行的應用程式時,應注意以下問題:

在 64 位 windows 作業系統中,int 和 long 是 32 位值。對於計畫為 64 位平台編譯的程式,應注意不要將指標賦給 32 位變數。在 64 位平台上,指標為 64 位,如果將該指標賦給 32 位變數,則應截斷該指標值。

在 64 位 windows 作業系統中,size_t、time_t 和 ptrdiff_t 是 64 位值。

在 32 位 windows 作業系統上 visual c++ 2005 之前的 visual c++ 版本中,time_t 是 32 位值。在 visual c++ 2005 和更高版本中,預設情況下,time_t 是 64 位整數。有關更多資訊,請參見時間管理。

應注意**在**採用 int 值並將其作為 size_t 或 time_t 值處理。數字有可能增長得比 32 位數大,並且資料在被傳遞歸 int 儲存時有可能被截斷。

%x(十六進製制 int 格式)printf 修飾符在 64 位 windows 作業系統中不會按預期的那樣工作。它只對傳遞給它的值的前 32 位值執行操作。

windows 32 位作業系統使用 %i32x 顯示整數。

windows 64 位作業系統使用 %i64x 顯示整數。

%p(指標的十六進製制格式)在 64 位 windows 作業系統中按預期的那樣工作。

C 64位遷移備忘

w64 int 這個型別有些奇怪,64位上大小顯示為8,但是作為指標型別,兩個變數進行算術運算時,得出的值並不正確。比如 w64 int p1 0x00000090 w64 int p2 0x000000a0 long p1 p2 long的值為4 實際應該為16 8 2 還是我理解錯了?改用 pu...

C 從32位系統遷移到64位系統的問題

前段用c 做了個程式,現在要把程式支援64位系統。首先是把該程式支援到 windows server 2003 和 windows server 2008兩個系統,由於我的程式是在xp上測試編譯的,直接拿過去不會出什麼問題吧。但是在執行的時候,老是報錯。沒辦法,在server 2003上裝了vs,一...

32 位和 64 位 Windows 常見問題

以下是有關 32 位和 64 位版本 windows 的一些常見問題的解答。32 位和 64 位版本 windows 之間有什麼區別?術語 32 位 和 64 位 是指計算機的處理器 也稱為 cpu 處理資訊的方式。64 位版本的 windows 可處理大量的隨機訪問記憶體 ram 其效率遠遠高於 ...