【发布时间】:2013-04-03 23:06:00
【问题描述】:
以下代码:
UINT32 dword = 4294967295;
if(dword + 1 != 0) // condition
在此类操作中,是否始终使用最大(整个)寄存器(可用于架构)?以上条件在 64 位模式下始终为真,而在 32 位模式下为假?
【问题讨论】:
-
我相信标准规定了整数溢出会发生什么,尽管我不记得具体细节了。当然,
UINT32在 32 位和 64 位架构上的大小相同,因此您希望它的行为相同。 -
@MarkRansom:无符号溢出包装。有符号溢出具有未定义的行为。
标签: c++ x86 x86-64 integer-overflow