檢查 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP