在C ++中检查乘法的整数溢出

假设我们要在将两个数字A和B相乘后找到结果。我们必须检查相乘后的值是否超过64位整数。如果将100和200相乘,则不会超过;如果将10000000000和-10000000000相乘,则会溢出。

要对此进行检查,我们必须执行一些步骤。这些如下-

步骤-

  • 如果任何一个数字为0,则不会超过

  • 否则,如果两个乘积除以一个等于另一个,则乘积不会超过

  • 对于其他一些情况,它将超过。

示例

#include <iostream>
#include <cmath>
using namespace std;
bool isMulOverflow(long long A, long long B) {
   if (A == 0 || B == 0)
      return false;
   long long result = A * B;
   if (A == result / B)
      return false;
   else
      return true;
}
int main() {
   long long a = 10000000000 , b = -10000000000;
   if(isMulOverflow(a, b)){
      cout <<"It will overflow";
   }
   else{
      cout <<"It will not overflow";
   }
}

输出结果

It will overflow