以下是引用边小白在2015-9-7 14:41:00的发言:
你看看这里http://m.blog.,百度到的,里面明确说明char类型数据范围是-128到127。
char 的范围取决于编译器实现,另外还有一个宏 CHAR_BIT 用来标明char的位数。
于是有 -128到127的,还有0到255,甚至还出现过只有7bits有效,和大于8bits的。
后来,基本上现存的所有编译都是使用 1bytes 的char,所以C标准中半推半就的默认了char为1bytes
但 char、signed char 和 unsigned char 仍然是三种不一样的类型
虽然 char 必然和 signed char/unsigned char 其中之一的表现相同
比如,gcc 中 char 虽然和 unsigned char 不是同一种类型,但行为表现一致,取值范围是 0到255
比如,vc 中 char 虽然和 signed char 不是同一种类型,但行为表现一致,取值范围是 -128到127
(vc中也可以用编译参数将 char 指定成 无符号类型,忘了编译参数是什么了)
总结一下:
a. char的大小是1字节,但看到别人的代码用 CHAR_BIT 也不要奇怪
b. char、signed char 和 unsigned char 是三种不一样的类型
c. char可能是具符号类型,可能是无符号类型
d. char用来存字符,signed char/unsigned char存数值