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