Una variabile di tipo int può contenere solo dati di tipo int... se tu assegni ad un int un char quest'ultimo viene convertito in un int e non c'è modo di sapere che prima della conversione era un char.
Una variabile di tipo int può contenere solo dati di tipo int... se tu assegni ad un int un char quest'ultimo viene convertito in un int e non c'è modo di sapere che prima della conversione era un char.
Amaro C++, il gusto pieno dell'undefined behavior.