adicionando int não assinado a int [duplicado]

Esta questão já tem uma resposta aqui:

Assinado para conversão não assinada em C - é sempre seguro? 8 respostas
#include <iostream>
int main ()
{
    using namespace std;
    unsigned int i = 4;
    int a = -40;
    cout<<a+i<<endl;
    return 0;
}

Executando isso me dá 4294967260

Eu sei que há uma conversão acontecendo, de um int assinado para unsigned int, mas como e por que esse valor em particular? Eu notei que é perto da soma de | 2147483647 | + 2147483647

questionAnswers(2)

yourAnswerToTheQuestion