C 为什么字符数据类型具有负范围?

C 为什么字符数据类型具有负范围?,c,C,对于整数、浮点数和double,存在-ve范围,因为数字可以是-ve,也可以是+ve,但: 为什么char的-ve范围也在-128之间,因为char是character(我的意思是它怎么可能是-ve) 有谁能帮我理解这背后的逻辑吗?这是历史性的。7位是US-ASCII字符加上控制字符(CR、LF、RET、BS等)所需的全部,因此您还有一位可供其他使用(EOF.e.)。为了表示这一点,字符被设计为有符号。可能重复的字符请注意,char、signed char和unsigned char是不同的

对于整数、浮点数和double,存在-ve范围,因为数字可以是-ve,也可以是+ve,但:

  • 为什么char的-ve范围也在-128之间,因为char是character(我的意思是它怎么可能是-ve)

有谁能帮我理解这背后的逻辑吗?

这是历史性的。7位是US-ASCII字符加上控制字符(CR、LF、RET、BS等)所需的全部,因此您还有一位可供其他使用(EOF.e.)。为了表示这一点,字符被设计为有符号。

可能重复的字符请注意,
char
signed char
unsigned char
是不同的类型
char
可以是有符号的,也可以是无符号的,这取决于平台。有时人们使用
char
进行计算(而不是处理字符)。许多年前,节省内存是必要的:)因此程序员必须使用
char
来处理小的整数值。