有没有在C或C++中指定位字段中可以指定的位数的限制?例如,我可以这样做吗:
例如,我可以在位字段中指定超过一定数量的位吗?
struct HugeInt {
int myInt: 1000;
};
我问的是C和C++,因为我知道语言规范有时不同,想知道上面的例子是否保证在C或C++中起作用/不起作用。
例如,我可以在位字段中指定超过一定数量的位吗?
struct HugeInt {
int myInt: 1000;
};
我问的是C和C++,因为我知道语言规范有时不同,想知道上面的例子是否保证在C或C++中起作用/不起作用。
简而言之,它必须在零和该类型的大小之间,如果没有位域部分的话。指定位域宽度的表达式应该是一个非负值的整数常量表达式,并且不应该超过省略冒号和表达式后所得到的类型对象的宽度。如果这个值为零,则声明不应包含声明符。
sizeof(type)* CHAR_BIT
,其中 type
是您的类型,它必须是 _Bool
、signed int
、unsigned int
或其他实现定义类型的限定或非限定版本。 - icktoofay位域'myInt'的大小(1000位)不能超过其类型的大小(int,通常为32位)