<分区>
Possible Duplicate:
Best way to detect integer overflow in C/C++
如果我有一个表达式 x + y
(在 C 或 C++ 中),其中 x
和 y
都是 uint64_t 类型
导致整数溢出,我如何检测它溢出了多少(进位),将 than 放在另一个变量中,然后计算余数?
<分区>
Possible Duplicate:
Best way to detect integer overflow in C/C++
如果我有一个表达式 x + y
(在 C 或 C++ 中),其中 x
和 y
都是 uint64_t 类型
导致整数溢出,我如何检测它溢出了多少(进位),将 than 放在另一个变量中,然后计算余数?
最佳答案
假设您使用的是无符号整数,余数将已存储在 x + y 的总和中。无符号整数溢出导致环绕(有符号整数溢出未定义)。请参阅评论中 Pascal 的标准引用。
溢出只能是1位。如果将 2 个 64 位数字相加,则进位位不能超过 1 个,因此您只需检测溢出情况即可。
关于如何检测溢出,之前有一个关于该主题的问题:best way to detect integer overflow .
关于c++ - 在 x + y 中获取 "carry",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092102/