【发布时间】:2014-12-16 14:05:06
【问题描述】:
我在浏览我们的一个组织数据文档时遇到了以下代码。
struct A {
unsigned short int i:1;
unsigned short int j:1;
unsigned short int k:14;
};
int main(){
A aa;
int n = sizeof(aa);
cout << n;
}
最初我认为大小为 6 个字节,因为 unsigned short int 的大小为 2 个字节。但上述代码的输出是 2 个字节(在 Visual Studio 2008 上)。
i:1、j:1 和 k:14 是否有可能使它成为位字段或其他东西?这只是一个猜测,我不太确定。有人可以帮我吗?
【问题讨论】:
-
这是一个位字段。大小为 16 位。这个问题范围很广,书中已经解释过很多次了。
-
你猜对了,这是位域的语法。您可以通过检查 c 或 c++ 中位域的参考来轻松验证这一点。
标签: c++ c bit-fields