为什么char在C语言中是1个字节

dan*_*mad 9 c char language-lawyer

为什么char 1C中的字节长?为什么不是2字节或4字节长?

将它保持为1字节的基本逻辑是什么?我在Java中知道a char2字节长.同样的问题.

Sou*_*osh 23

char是1个字节,C因为它是在标准中指定的.

最可能的逻辑是.a char(在标准字符集中)的(二进制)表示可以适合1字节.在初步开发时C,最常用的标准是,ASCII并且EBCDIC分别需要7位和8位编码.所以,1一个字节足以代表整个字符集.

OTOH,在此期间Java出现,扩展的charcater集的概念和unicode存在.所以,要面向未来,并支持可扩展性,char给予2 bytes,这是能够处理扩展字符集值.

  • @duskwuff:不仅如此,但目的可能是为了避免以英语为中心,在许多使用案例中,UTF-16最终会比UTF-8更笨重,即使是使用许多字符的语言也会更加紧凑在UTF-16中,因为机器处理的大部分文本被设计为机器可读而不是人类可读的,并且机器可读的文本通常是ASCII. (2认同)

Nid*_*ger 5

为什么char持有超过1字节?char通常表示ASCII字符.只需看一下ASCII表,(扩展)ASCII代码中只有256个字符.因此,您只需要表示0到255之间的数字,即8bit = 1byte.

看一下ASCII表,例如:http://www.asciitable.com/

这就是C.​​当Java被设计时,他们预计将来任何字符(也是Unicode)都可以保存在16bits = 2bytes中.


Pav*_*nar 5

这是因为C languange已有37年历史,并且不需要为1个字符添加更多字节,因为只使用了128个ASCII字符(http://en.wikipedia.org/wiki/ASCII).