char是C/C++整型數據中比較古怪的一個,其它的如int/long/short等不指定signed/unsigned時都默認是signed,但char在標準中是unsigned,編譯器可以實現爲帶符號的,也可以實現爲不帶符號的,有些編譯器如pSOS的編譯器,還可以通過編譯開關來指定它是有符號數還是無符號數。
char *p="abcd";
是可以通過編譯的
但如果用
signed char *p="abcd";
還是
unsigned char *p="abcd";
都是不能通過編譯的。
關於這些在C/C++的語言標準或一些經典書籍如The C++ Programing Language中都有很清楚的說明。
判斷編譯器的默認char符號
#include<stdio.h>
int main(void)
{
char c=-1;
if(c<200)
{ printf("signed\n"); }
else
{ printf("unsigned\n"); }
return 0;
}