Computer >> Máy Tính >  >> Lập trình >> C ++

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

Giả sử chúng ta muốn tìm kết quả sau khi nhân hai số A và B. Chúng ta phải kiểm tra xem giá trị nhân có vượt quá số nguyên 64 bit hay không. Nếu chúng ta nhân 100 và 200, nó sẽ không vượt quá, nếu chúng ta nhân 10000000000 và -10000000000, nó sẽ tràn.

Để kiểm tra điều này, chúng ta phải làm theo một số bước. Những thứ này giống như bên dưới -

Các bước -

  • Nếu bất kỳ ai trong số các số là 0, thì nó sẽ không vượt quá

  • Ngược lại, nếu tích của hai chia cho một bằng nhau, thì nó sẽ không vượt quá

  • Đối với một số trường hợp khác, nó sẽ vượt quá.

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

Đầu ra

It will overflow