我可以在C或C ++的位字段中指定的位数有限制吗?例如,我可以这样做:
struct HugeInt {
int myInt: 1000;
};
我问C和C ++,因为我知道语言规范有时会有所不同,并希望看看上面的例子是否可以保证在C或C ++中工作/不工作。
答案 0 :(得分:14)
在C11,第6.7.2.1节,第4条:
指定位字段宽度的表达式应为整数常量表达式,其非负值不超过将指定的类型的对象宽度,而冒号和表达式省略。如果该值为零,则声明不应具有声明者。
简而言之,如果它没有位字段部分,它必须介于零和类型的大小之间。
答案 1 :(得分:0)
位字段'myInt'(1000位)的大小不能超过其类型的大小(int,通常为32位)