In D operations among chars return a int. The same happens in C/C++.If you subtract a char from a char in general you can have a negative result, that can't fit in a char. So what's buggy is your thinking.
Ok. Thank you! I never thought about it that way