Entero sin signo en C ++ [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Desbordamiento de Int sin firmar 3 respuestas

Escribo el siguiente código:

 #include <iostream>
using namespace std;
int main() {

   unsigned int i=1;
   i=i-3;
   cout<<i;
   return 0;
}

El resultado es un valor basura, que es comprensible.
Ahora escribo el siguiente código:

    #include <iostream>
    using namespace std;
    int main() {

    unsigned int i=1;
    i=i-3;
    i=i+5;
    cout<<i;
    return 0;
}

Ahora el resultado es 3. ¿Qué está pasando aquí? ¿Cómo se agrega el valor de basura por 5 aquí?

Respuestas a la pregunta(1)

Su respuesta a la pregunta