检查算术运算中的溢出条件

时间:2011-10-28 16:53:54

标签: c++ c

  

可能重复:
  Best way to detect integer overflow in C/C++

我们如何检查加法,乘法或减法之类的算术运算是否会导致溢出?

1 个答案:

答案 0 :(得分:2)

首先检查操作数的大小,然后使用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 */ }

在事实之后,您通常无法可靠地检测算术错误,因此您必须先进行所有检查。

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