2

我正在制作一个解决基本数学运算(*, /, +, -)的小程序,并且我正在使用long long int(64位数字),所以我可以对大数字进行数学运算。

但有一个问题。我可以检查操作数是否没有超过或低于限制(使用LONG_LONG_MAXand LONG_LONG_MIN)。但是当我(例如)将两个非常大的数字相乘(导致 溢出long long int)时,LONG_LONG_MAX检查不起作用。相反,结果是 -4。

C/C++ 中是否有机会检查?例如一些尝试捕获构造?

4

1 回答 1

2

对于 x = a*b;

if (a != 0 && x / a != b) {
// overflow handling
}

有关更多详细信息,请参阅此帖子

大数的乘法,如何捕获溢出

于 2017-05-10T09:47:26.130 回答