Visual Studio VS C++Builder07 不同的公司,同样的Bug

Visual Studio VS C++Builder07 不同的公司,同样的Bug
最近在处理超大文件,用到了DWORD64

期望用户将偏移量以DWORD64的形式传进来,然后我调用WindowsAPI进行定位,读取文件,返回

这是CB下的测试结果,没有报错,只给你返回一个错误的结果
1 //  是测试DWORD64右移32位会出现什么状况
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下编译通过,结果正确
1 //  目的同上
2 DWORD64 dw641G  =   1024 * 1024 * 1024 ;
3 DWORD64 dw6404  =   2 * dw641G ;
4 UINT uTmp  =  dw6404 >> 32 //  0

结论:是两家的编译器在预编译的时候,不允许数值超过1G。

你可能感兴趣的:(Visual Studio VS C++Builder07 不同的公司,同样的Bug)