检查 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

更新于: 2019-10-21

2K+ 次浏览

开启您的职业生涯

完成课程后获得认证

开始
广告
© . All rights reserved.