检查 C++ 乘法中的整数溢出
c++server side programmingprogramming更新于 2024/9/23 4:03:00
假设我们想要求出两个数 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