C中char类型值的范围

时间:2011-01-10 14:24:27

标签: c

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

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

6 个答案:

答案 0 :(得分:12)

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

如果您查看limits.h(来自内存),您会看到CHAR_BIT符号(以及其他符号),告诉您char实际使用了多少位,如果这足够大了,是的,可以存储值1000。

答案 1 :(得分:5)

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

答案 2 :(得分:4)

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

答案 3 :(得分:2)

包含limits.h并检查CHAR_MAX

的值

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

示例:

#include <stdint.h>

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