您好我想在C中声明一个12位变量或者任何非传统的" size变量(不是2 ^ n的变量)。我该怎么做我到处看,我找不到任何东西。如果这不可能,您将如何在其自己的变量中保存某些数据。
答案 0 :(得分:4)
使用位域:
sleep
答案 1 :(得分:4)
与Ada不同,C无法指定具有有限值范围的类型。 C依赖于具有实现定义特征的预定义类型,但具有某些保证:
标准保证类型short
和int
至少保留16位,您可以使用其中任何一个来保存12位值,有符号或无符号。
同样,类型long
保证至少保留32位,并且long long
至少包含64位。选择足够大的类型以供您使用。
int8_t
,int16_t
,int32_t
,int64_t
及<stdint.h>
中定义的无符号对应项具有更精确的语义,但可能无法使用在所有系统上。类型int_least8_t
,int_least16_t
,int_least32_t
和int_least64_t
保证可用,以及类似的int_fastXX_t
类型,但它们不经常使用,可能因为名字有些麻烦。
最后,您可以将位字段用于从1
到64
的任何位数,但这些位数仅作为结构成员使用。大小为1的位字段应声明为unsigned
。
答案 2 :(得分:2)
数据始终以字节组(每个8位)存储。
在C中,变量可以声明为1个字节(&#34; char&#34;或8位),2个字节(&#34;短&#34;许多计算机上的int为16位),以及4个字节(&#34;长&#34;许多计算机上的int是32位)。
在更高级别,您正在寻找&#34; bitfields&#34;。