檢查 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
廣告