Por que é diferente entre -2147483648 e (int) -2147483648

Quando eu executo o seguinte código em Windows7 x64, compilado com o GCC do MinGW, o resultado parece estar underflowed:

cout<<-2147483648 ;    //Output: 2147483648

mas quando eu atribuí-lo a uma variável inteira, ou simplesmente convertê-lo para o tipo int:

cout<<(int)-2147483648 ; //Output: -2147483648 

Então, o que há de errado com a versão anterior do meu código? Não é o tipo int? ou qual o limite inferior do Integer é exatamente? Muito Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion