檢查 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+ 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始
廣告