I am trying to understand the phenomenon of overflow and decided to demonstrate the same by executing the piece of code provided below:
#include <bits/stdc++.h>
using namespace std;
int main(){
int a = 100000;
int b = 100000;
cout << a * b << endl;
long int c = a * 1LL * b;
cout << c;
return 0;
}
The idea is that simply multiplying a and b (as done in line 6) would result in an integer overflow as 10^10 falls outside the range of the integer data type. To overcome this, the product (a*b) is multiplied with the literal '1LL' (as shown in line 7). The problem is that integer overflow still takes place as the output of the program is:
1410065408
1410065408
It's possible that I am making a super silly mistake somewhere, but I have spent a sufficient amount of time trying to understand where it's going wrong and am yet to find the reason. Hoping for some help/guidance here :)