是否可以声明一个非常大的位域,例如
struct binfield{
uber_int field : 991735910442856976773698036458045320070701875088740942522886681;
}wordlist;
只是为了澄清,我并没有尝试用256位表示这个数字,那就是我想要使用多少位。或者也许我的电脑里没有那么多位?
答案 0 :(得分:2)
C不支持任意大小的数字数据类型。您只能使用编译器提供的那些整数大小,并且当您希望代码可移植时,您最好坚持标准化类型char
(8位)的最小保证大小,{{1 (16位),short
(32位)和long
(64位)。
但你可以做的是创建一个long long
。 char总是至少8位(并且除了在一些非常奇特的平台上之外,不超过8位)。因此,您可以使用char数组来存储尽可能多的位值,因为您可以提供内存。但是,当您想使用char数组作为位域时,您需要一些样板代码来访问正确的字节。
例如,要获取char数组的位char[]
的值,请使用
n