最近在處理超大文件,用到了DWORD64
期望用戶將偏移量以DWORD64的形式傳進(jìn)來,然后我調(diào)用WindowsAPI進(jìn)行定位,讀取文件,返回
這是CB下的測試結(jié)果,沒有報錯,只給你返回一個錯誤的結(jié)果
1
// 是測試DWORD64右移32位會出現(xiàn)什么狀況
2
DOWRD64 dw6403 = 1024*1024*1024;
3
DWORD64 dw6404 = 2*1024*1024*1024;
4
UINT uTmp = 6403>>32; // 0
5
uTmp = 6404>>32; // oxFFFFFFFF
// CB下編譯通過,結(jié)果正確
1
// 目的同上
2
DWORD64 dw641G = 1024*1024*1024;
3
DWORD64 dw6404 = 2*dw641G ;
4
UINT uTmp = dw6404>>32; // 0
結(jié)論:是兩家的編譯器在預(yù)編譯的時候,不允許數(shù)值超過1G。
posted on 2010-02-02 20:09
創(chuàng)建更好的解決方案 閱讀(1882)
評論(9) 編輯 收藏 引用 所屬分類:
C++專欄 、
內(nèi)存專題