char, signed char,unsigned char, short int unsigned short int, int 這些數據類型是大家平時工作中一定會用到的,今天不知咋回事,看到這些數據類型時突然產生了一個疑問:數據類型要麼是有符號的,要麼是無符號,爲什麼每種數據類型會多一個缺省的呢?查找資料說是爲了移植方便。怎麼個方便法呢?看如下取值類型:
類型 最小範圍
char 0 ~ 127
signed char -127 ~ 127
unsigned char 0 ~ 255
從以上取值範圍你是否發現了什麼? 默認的char的取值範圍剛好是signed char和 unsigned char的交集,這便是方便之處了,倘若你定義的類型是char,無論移植的機器char 的取值範圍是 -127 ~ 127還是 0 ~ 255,你使用 0 ~ 127都是絕對沒問題的。至於顯示的定義爲有符號,或無符的,主要是爲了性能問題。
從這裏我們可以看得出語言設計者的精妙之處。跨平臺性,效率性,我們的編碼是否有全盤的考慮過這些呢?