John, yes, I agree that one should always specify signed or unsigned when
using char. But then, one has to! Do you always say "signed int", even
though signed is the default? I sure don't. The optional signedness of char
as a backwards-compatible measure doesn't wash… _any_ code is
backwards-compatible with the compiler it was written for; there is no
compatibility benefit in not legislating for compilers yet to be written.
If ANSI were to decree that char is signed by default, compiler writers
would still be free to put in a switch to override the default for use with
source that depended on an older compiler's unsigned char.
Checking limits.h seems like overkill – if you want 0-255 you pick
unsigned, if you want -128-127 you pick signed. Why bother checking? I
didn't know about the 'U' code – is that an ANSI innovation?
BTW, I'm not criticizing C in general… it's almost the only language I
use. But the hermaphroditic nature of char is something I was hoping ANSI
would correct.
Nick