This is a simple problem:
int main()
{
    long int a = 100000;
    long int b = 100000;
    long int c = a*b;
    std::cout << c << std::endl;
}
The output for this (in MSVC) is 1410065408 where one would expect 1 followed by 10 of 0's. I use long ints which the container is large enough for a number of this size if I am not mistaken. Why does this occur?
 
    