You are adding two types which are not directly compatible: char + int. Smaller one is converted to larger one: (char→int) + int. Result is a common type: int.
Just to warn you about second quirk: any integral type smaller than int is pomoted to int in any operation. So char + short result is int, as both operands promoted to int. That is what happened in your case, actually.