Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra tràn số nguyên khi nhân trong C++


Kiểm tra nhân hai số A, B có tràn 64-bit integer hay không. Ví dụ 100×200 không tràn, 10000000000 × -10000000000 sẽ tràn.

Cách kiểm tra: nếu A=0 hoặc B=0 → không tràn. Ngược lại tính result = A*B, nếu A == result/B → không tràn, ngược lại tràn.

Ví dụ

#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";
    }
}

Kết quả

It will overflow