c++ - 在 x + y 中获取 "carry"

标签 c++ c math

<分区>

Possible Duplicate:
Best way to detect integer overflow in C/C++

如果我有一个表达式 x + y(在 C 或 C++ 中),其中 xy 都是 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/

相关文章:

c++ - 如何在 QSqlQueryModel 中获取硬编码 QCheckBoxes 的状态?

c - 返回 float 的指数值

algorithm - 如何找到除以给定数字的只有 0 和 1 的最小数字?

java - 确定 F 检验的临界 F 值时确定 Beta 函数

c++ - 返回后字符变化

c++ - 为什么这个 C 代码在 Codeblocks 中编译,而不是在 Visual Studio 中编译?

c - 运行程序返回 -1.#QNAN0

c++ - AdHoc 网络库 Linux

algorithm - 有什么好的方法可以分解高斯整数?

c++ - 为什么 eglMakeCurrent 因 EGL_BAD_ALLOC 而失败?