64BIT编程应该注意的一点

来源:互联网 发布:广州游泳培训.知乎 编辑:程序博客网 时间:2024/06/02 17:03

vs2005,64位编程会出现下面现象:

DWORD dwStart = 5;

DWORD dwEnd = 9;

DWORD dwResult = (dwStart - dwEnd > 0) ? 3 : 2;

运行的结果会为3,而不是想当然的2。

分析:

dwStart - dwEnd = -4;是一个DWORD类型,无符号长整型,而0值是一个有符号整型,所以会出现类型提升,将DWORD类型隐式转换为long类型,转换后为0xfffffffc,此值会大于0,所以结果返回了3。

原创粉丝点击