比特菲尔德长的大?

时间:2015-05-08 08:31:36

标签: c data-structures

是否可以声明一个非常大的位域,例如

struct binfield{
    uber_int field : 991735910442856976773698036458045320070701875088740942522886681;
}wordlist;

只是为了澄清,我并没有尝试用256位表示这个数字,那就是我想要使用多少位。或者也许我的电脑里没有那么多位?

1 个答案:

答案 0 :(得分:2)

C不支持任意大小的数字数据类型。您只能使用编译器提供的那些整数大小,并且当您希望代码可移植时,您最好坚持标准化类型char(8位)的最小保证大小,{{1 (16位),short(32位)和long(64位)。

但你可以做的是创建一个long long。 char总是至少8位(并且除了在一些非常奇特的平台上之外,不超过8位)。因此,您可以使用char数组来存储尽可能多的位值,因为您可以提供内存。但是,当您想使用char数组作为位域时,您需要一些样板代码来访问正确的字节。

例如,要获取char数组的位char[]的值,请使用

n