检查算术运算中的溢出情况

发布于 2024-12-12 05:07:35 字数 232 浏览 1 评论 0原文

可能的重复:
检测 C/C++ 中整数溢出的最佳方法

如何我们检查加法、乘法或减法等算术运算是否会导致溢出?

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

how do we check if any arithmetic operation like addition, multiplication or subtraction could result in an overflow?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟织青萝梦 2024-12-19 05:07:35

首先检查操作数的大小,然后使用 std::numeric_limits。例如,对于加法:

#include <limits>

unsigned int a, b;  // from somewhere

unsigned int diff = std::numeric_limits<unsigned int>::max() - a;

if (diff < b) { /* error, cannot add a + b */ }

您无法在事后普遍可靠地检测算术错误,因此您必须在事前进行所有检查。

您可以轻松地将此方法模板化,使其适用于任何数字类型。

Check the size of the operands first, and use std::numeric_limits. For example, for addition:

#include <limits>

unsigned int a, b;  // from somewhere

unsigned int diff = std::numeric_limits<unsigned int>::max() - a;

if (diff < b) { /* error, cannot add a + b */ }

You cannot generally and reliably detect arithmetic errors after the fact, so you have to do all the checking before.

You can easily template this approach to make it work with any numeric type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文