È ovvio che venga fuori il codice ASCII di quel carattere... cosa vuoi che ci sia memorizzato in una variabile char?
Se ho capito quello che vuoi fare allora devi fare così:
.codice:int intero; char carattere; if(carattere>='0' && carattere<='9') intero = (int)(carattere - '0'); else cout<<"Carattere non valido";