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都是绝对没问题的。至于显示的定义为有符号,或无符的,主要是为了性能问题。
从这里我们可以看得出语言设计者的精妙之处。跨平台性,效率性,我们的编码是否有全盘的考虑过这些呢?