检测32位双字+双字携带/ C++

old*_*ool 2 c c++ dword overflow addition

假设你有两个32位DWORD x和y,你如何检测它们的总和是否会导致溢出,但是不需要使用本机程序集来检查进位标志.我喜欢算术或二元运算符.我想可能有一些测试方法来解决它.谢谢

Ste*_*uan 5

为什么不测试总和呢?

DWORD sum = x + y;
bool const overflow = (sum < x);
Run Code Online (Sandbox Code Playgroud)

  • @Mario:这不是很正确.`-5`不是unsigned int的有效值,并且在分配给DWORD时变为0xFFFFFFFB.所以x + y = 0xFFFFFFFB + 5 = 0x100000000,而32位的0结果实际上是溢出的结果. (2认同)