Non stampa "male" ... e' corretto.

Il char e' un tipo di dati con segno.

Devi usare l'unsigned char (o un cast apposito)

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

oppure

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