unsigned char 和 signed char 區別:
signed char取值範圍是 -128 到 127unsigned char 取值範圍是 0 到 255
ANSI C 提ANSI C 提供了3種字元型別,分別是char、signed char、unsigned charchar相當於signed char或者unsigned char,但是這取決於編譯器!這三種字元型別都是按照1個位元組儲存的,可以儲存256個不同的值。不同的是取值範圍signed char取值範圍是 -128 到 127unsigned char 取值範圍是 0 到 255signed char的最高位為符號位,因此char能表示-128~127, unsigned char沒有符號位,因此能表示0~255。但是char究竟相當於signed char呢還是相當於unsigned char呢??這就是char和int的不同之處!int==signed int,但是char不能簡單以為==signed char要確定char究竟等同什麼要基於不同的編譯器做測試大多數機器使用補碼來儲存整數,在這些機器中按照整數型別儲存的-1的所有位均是1假設我的機器也是如此儲存,就能據此判斷char究竟是等於signed char還是unsigned char在實際使用過程種有什麼區別呢?主要是符號位,但是在普通的賦值,讀寫檔案和網路位元組流都沒什麼區別,反正就是一個位元組,不管最高位是什麼,最終的讀取結果都一樣,只是你怎麼理解最高位而已,在螢幕上面的顯示可能不一樣。但是我們卻發現在表示byte時,都用unsigned char,這是因為byte沒有符號位之說。如果是char,那麼系統認為最高位是符號位,而int可能是16或者32位,那麼會對最高位進行擴充套件(注意,賦給unsigned int也會擴充套件),而如果是unsigned char,那麼不會擴充套件。這就是二者的最大區別。
unsigned char 和 signed char 區別:
signed char取值範圍是 -128 到 127unsigned char 取值範圍是 0 到 255
ANSI C 提ANSI C 提供了3種字元型別,分別是char、signed char、unsigned charchar相當於signed char或者unsigned char,但是這取決於編譯器!這三種字元型別都是按照1個位元組儲存的,可以儲存256個不同的值。不同的是取值範圍signed char取值範圍是 -128 到 127unsigned char 取值範圍是 0 到 255signed char的最高位為符號位,因此char能表示-128~127, unsigned char沒有符號位,因此能表示0~255。但是char究竟相當於signed char呢還是相當於unsigned char呢??這就是char和int的不同之處!int==signed int,但是char不能簡單以為==signed char要確定char究竟等同什麼要基於不同的編譯器做測試大多數機器使用補碼來儲存整數,在這些機器中按照整數型別儲存的-1的所有位均是1假設我的機器也是如此儲存,就能據此判斷char究竟是等於signed char還是unsigned char在實際使用過程種有什麼區別呢?主要是符號位,但是在普通的賦值,讀寫檔案和網路位元組流都沒什麼區別,反正就是一個位元組,不管最高位是什麼,最終的讀取結果都一樣,只是你怎麼理解最高位而已,在螢幕上面的顯示可能不一樣。但是我們卻發現在表示byte時,都用unsigned char,這是因為byte沒有符號位之說。如果是char,那麼系統認為最高位是符號位,而int可能是16或者32位,那麼會對最高位進行擴充套件(注意,賦給unsigned int也會擴充套件),而如果是unsigned char,那麼不會擴充套件。這就是二者的最大區別。