It isn’t.
The signedness of a char
that isn’t either a signed char
or unsigned char
is implementation-defined. Many systems make it signed to match other types that are signed by default (like int
), but it may be unsigned on some systems. (Say, if you pass -funsigned-char
to GCC.)