C++內置了4種算術類型,分別為整數,浮點數,單個字符和布爾值。整數,浮點數,單個字符都有帶符號和無符號兩種類型,布爾值沒有。整數和浮點數的帶符號和無符號類型很好理解,比如一般書上都有的int 范圍 -32700——32700:unsigned int 范圍 0——65500。(整數,浮點數默認都是signed。即int, float其實就是signed int 和 signed float)
下面到正題了
先從《c++ primer》上引一段話
”和其他整型不同,char 有三種不同的類型:普通的char ,unsigned char 和signed char。雖然char 有三種不同的類型,但只有兩種表示方式。可以使用unsigned char 或者signed char 來表示char 類型。使用那種char 表示方式由編譯器決定。“
char 是字符類型。ASCII碼一共需要0到127,共128種,signed char 的范圍是-127-127或者是-128-127,unsigned char 的范圍是0-255這樣,signed char 和unsigned char都能.夠完成他們本身的任務。char 是實現相關的,可以在gcc編譯時加上選項-funsigned-char使char默認為unsigned char 。
字符型有三種類型但是只有兩種表示方式,這裡要明白,char 和signed char 是不同的類型,雖然在很多時候signed char 是char 的默認選項。
c++中把負值賦給unsigned類型 是合法的,得到的是負值對該類型的取值個數求模侯的值。把-1賦給unsigned char ,結果是255。
那你會說unsigned char 有什麼用呢?c++沒有內置的byte 數據結構,一般的用
typedef unsigned char byte typedef unsigned char byte
來自定義。
在申請內存,進行位操作的時候使用相當方便。
平時我們使用的時候沒有特別要求,只要用char 就可以了。覺得相對底層一些的操作會用到unsigned char 。