最近在处理超大文件,用到了DWORD64
期望用户将偏移量以DWORD64的形式传进来,然后我调用WindowsAPI进行定位,读取文件,返回
这是CB下的测试结果,没有报错,只给你返回一个错误的结果
1// 是测试DWORD64右移32位会出现什么状况
2DOWRD64 dw6403 = 1024*1024*1024;
3DWORD64 dw6404 = 2*1024*1024*1024;
4UINT uTmp = 6403>>32; // 0
5uTmp = 6404>>32; // oxFFFFFFFF
// CB下编译通过,结果正确
1// 目的同上
2DWORD64 dw641G = 1024*1024*1024;
3DWORD64 dw6404 = 2*dw641G ;
4UINT uTmp = dw6404>>32; // 0
结论:是两家的编译器在预编译的时候,不允许数值超过1G。
posted on 2010-02-02 20:09
创建更好的解决方案 阅读(1864)
评论(9) 编辑 收藏 引用 所属分类:
C++专栏 、
内存专题