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

时间:2015-05-11 11:08:24

标签: c char language-lawyer

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

将它保持为1字节的基本逻辑是什么?我知道在Java中,char长度为2个字节。同样的问题。

5 个答案:

答案 0 :(得分:22)

charC中是1个字节,因为它是在标准中指定的。

最可能的逻辑是。 char(标准字符集中)的(二进制)表示可以适合1个字节。在C的主要开发时,最常用的标准是ASCIIEBCDIC,它们分别需要7位和8位编码。因此,1 byte 足以表示整个字符集。

OTOH,在Java出现的时候,扩展的charcater集和unicode的概念出现了。因此,为了面向未来并支持可扩展性,char被赋予2 bytes,它能够处理扩展字符集值。

答案 1 :(得分:5)

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

查看ASCII表格,例如在这里:http://www.asciitable.com/

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

答案 2 :(得分:5)

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

答案 3 :(得分:2)

当C开发出来时(第一本书是由其开发人员在1972年发布的),两个主要的字符编码标准分别是ASCII和EBCDIC,分别是7和8位字符编码。而且内存和磁盘空间在当时都是更受关注的问题; C在具有16位地址空间的机器上普及,并且对字符串使用多于一个字节将被认为是浪费。

当Java出现(20世纪90年代中期)时,一些有远见的人能够认识到语言可以利用国际标准进行字符编码,因此选择Unicode作为其定义。到那时,内存和磁盘空间不再是问题。

答案 4 :(得分:0)

您不需要多于一个字节来表示整个ascii表(128个字符)。

但是还有其他C类型有更多空间来包含数据,例如 int 类型(4字节)或 long double 类型(12字节)。

所有这些都包含数值(甚至是字符!即使它们被表示为“字母”,它们是“数字”,你可以比较它,添加它......)。

这些只是不同的标准尺寸,例如长度为cm和m。