Even if plain char is signed, then also are plain and signed char
distinct ?
I mean can they have different representations?
Signed char is a type. Unsigned char is another type,
whose representation is necessarily different from that of
signed char.
Plain char is a third type. It has the same representation
as one of the first two -- either signed char or unsigned char --
but is a distinct type nonetheless.
Many people find this weird, for a simple reason: It's weird.
But that's the way it is, mostly for historical reasons.
If it's any comfort, consider that on many systems there are
only two representations shared among the three distinct types
short, int, and long: Usually short and long are different, and
int has the same representation as one or the other. But short
and int are distinct types even on systems where they have the
same representation, while int and long are distinct even on
systems where *they* have the same representation.