Turns out that char isn't... (27 Dec 2005)
Turns out that char isn't short for signed char, it's a distinct type:
% cat tmp.c void foo(void) { signed char *ps = "signed?"; unsigned char *pu = "unsigned?"; } % gcc -c tmp.c tmp.c: In function 'foo': tmp.c:3: warning: pointer targets in initialization differ in signedness tmp.c:4: warning: pointer targets in initialization differ in signedness
From this thread