Quel est le problème avec printf ("% llx")?

J'ai ce bout de code qui remet en question toutes mes connaissances de C.
Ici, j'ai :

int main(void){
    unsigned long long int massage ;

    scanf("%llX", &massage); //input: 0x1234567890abcdef
    printf("%llX", massage);
    return 0;
}

Sur mon "64bit - Corei5 - Fedora - GCC" il imprime exactement ce que je nourris. mais sur mon copain (système 32 bits, MS XP, MinGW), il imprime 90ABCDEF. Je ne comprends pas pourquoi. personne ne sait?

BTW: sizeof(unsigned long long int) sur sa système est 8.

source d'informationauteur Untitled