Valeurs non signées en C

J'ai le code suivant:

#include <stdio.h>

int main() {
    unsigned int a = -1;
    int b = -1;
    printf("%x\n", a);
    printf("%x\n", b);

    printf("%d\n", a);
    printf("%d\n", b);

    printf("%u\n", a);
    printf("%u\n", b);
    return 0;
}

La sortie est:

ffffffff
ffffffff
-1
-1
4294967295
4294967295

Je vois qu'une valeur est interprétée comme signés ou non selon la valeur passée à printf fonction. Dans les deux cas, les octets sont identiques (ffffffff). Alors, qu'est-ce que le unsigned mot?

source d'informationauteur rvillablanca