是否可以将多个字节值存储到char类型?
比如说char c;
,我想在c
中存储1000。有可能这样做吗?
答案 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 */