c++ primer第32頁指出
和其他類型不同,char有三種不同的類型:普通char、unsigned char、signed char。雖然char有三種不同的類型,但是隻有兩種表示方式。可以使用unsigned char或者signed char表示char類型。使用哪種char類型標識方式由編譯器決定。
理解起來有點費解啊,於是乎網上搜了下,爲什麼有三種不同的類型,又爲什麼有兩種表示方式?原來是這樣的:在程序中直接寫個int , 默認是signed int , 但是在程序中寫個char ,就沒有默認了,具體是signed char 還是unsigned char ,取決於編譯器的設置。
對於vc、x86上的gcc,char被處理成signed char。 如果想測試你的編譯器,可以用這段代碼
char a =-1;
printf("a=%d",a);
如果結果是 -1,則當前編譯器將char 處理成signed char; 如果結果是255,則當前編譯器將char處理成unsigned char。
參考博文:
http://bbs.chinaunix.net/thread-889260-1-1.html
http://www.cppblog.com/wuzimian/archive/2012/05/28/176427.aspx