我们如何检查加法,乘法或减法之类的算术运算是否会导致溢出?
答案 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 */ }
在事实之后,您通常无法可靠地检测算术错误,因此您必须先进行所有检查。
您可以轻松地模拟此方法,使其适用于任何数字类型。