3

我最近看到一个声明,说 C 中的“char”类型实际上是一种特殊形式的整数——它存储代表字符和符号的 ASCII 码数字。

这在多大程度上有效?这导致了另一个问题 - char 类型真的可以在 C 中归类为整数吗?

4

3 回答 3

11

是的,在 C 中,char被认为是整数类型。它至少需要 8 位。a 和 byte 存储之间的等价物char是相当明确的,而不仅仅是通常发生的事情。例如,(C99,§5.2.4.2.1/1):

number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT                                            8

因此,achar始终只占用一个字节,它必须至少为 8 位。如果它更大,它仍然只占用一个字节——但那个字节恰好大于 8 位。

就持有 ASCII 码而言,这通常是正确的,但不一定如此。在诸如 IBM 大型机之类的东西上,它可能会保存 EBCDIC 代码。在更常见的机器上,“ASCII”或多或少是偶然发生的,但是当编码非英文字符时,你很快就会发现它并不是真正存储 ASCII。它通常存储 ISO 8859/x,或者可能是 Unicode UTF-8。

于 2012-07-28T05:47:00.917 回答
4

char类型是 C 中的整数类型,与其他整数类型(如shortintlong等)属于同一家族。 整数类型可以存储整数值,最多可存储用于描述整数类型的编码位数。例如,在大多数平台上,achar是 8 位或一个字节,因此它最多可以表示 2^8 个不同的值。

于 2012-07-28T05:26:47.653 回答
4

是的,a char(通常)是一个单字节整数。除了编译器知道以不同的方式处理它,通常使用 ASCII 字符语义。许多库/头文件定义了一个BYTE类型,只不过是一个unsigned char,用于存储单字节整数。

于 2012-07-28T05:26:58.343 回答