C中char类型值的范围

是否可以将多个字节值存储到char类型?

比如说char c; 我希望在c存储1000。 有可能这样做吗?

从技术上讲,不,您不能将超过一个字节值存储到char类型。 在C中, char和字节具有相同的大小,但不一定限于8位。 许多标准机构倾向于使用术语“八位字节”来获得精确的8位值。

如果你查看limits.h (从内存中),你会看到CHAR_BIT符号(以及其他)告诉你实际上有多少位用于一个char ,如果它足够大那么,是的,它可以存储值1000。

可以存储在C类型中的值的范围取决于其大小,并且C未指定,这取决于体系结构。 char类型至少有8位。 通常(几乎普遍)也是它的最大值(你可以在你的limits.h检查它)。 因此,在char中,您将能够存储-128到127,或0到255(有符号或无符号)。

C中char的最小大小为8位,不足以容纳超过256个值。 它可能在特定实现中更广泛,例如可单词寻址的体系结构,但您不应该依赖它。

包括limits.h并检查CHAR_MAX的值。

可能不是。 C标准要求char可以保存至少8位,因此您不能依赖于能够以可移植的方式存储长度超过8位的值。

(*在当今最常用的系统中,字符为8位)。

Char的宽度取决于系统。 但假设您正在使用合理的C99兼容的东西,您应该可以访问标头stdint.h,它定义了格式intN_t和uintN_t的类型,其中N = 8,16,32,64。 这些保证至少为N位宽。 因此,如果你想确定一个具有一定比特数的类型(无论系统如何),那些就是你想要的人。

例:

 #include  uint32_t foo; /* Unsigned, 32 bits */ int16_t bar; /* Signed, 16 bits */