Multiplication of two integers in C++
I have a pretty basic question, but I am not sure if I understand the concept or not. Suppose we have: int a = 1000000; int b = 1000000; long long c = a * b; When I run this, c shows negative value, so I changed also a and b to long long and then everything was fine. So why do I have to change a and b , when their values are in range of int and their product is assigned to c (which is long long )? I am using C/C++ The int s are not promoted to long long before multiplication, they remain int s and the product as well. Then the product is cast to long long , but too late, overflow has struck.