Per quale motivo se io ho una variabile char il cui valore ascii è inferiore a 127 e provo a stamparlo a video come int me lo stampa corretto, mentre invece se è maggiore uguale a 127, lo stampa male???

Esempio:

char mio = 'x';
printf("%d",mio);

a video viene stampato 120 quindi corretto
invece se ho:

char mio = 'é';
printf("%d",mio);

a video viene stampato -23 quindi errato!

Grazie per l'aiuto!