char, unsigned char, signed char 爲什麼會存在三種類型

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

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章