[请说明这段代码的执行方式。为什么我们在结构中使用了“:”。结构中使用冒号是什么。sizeof运算符的输出应该是什么。
#include <stdio.h>
int main()
{
struct bitfield {
signed int a : 3;
unsigned int b : 13;
unsigned int c : 1;
};
struct bitfield bit1 = { 2, 14, 1 };
printf("%ld", sizeof(bit1));
return 0;
}
这是bit fields语法的一部分。这意味着a
占用3位,b
占用13位,c
仅占用1位。当然,该结构将不会仅占用内存中的17位,因为它必须与作为最小可寻址存储单元的字节对齐,因此sizeof(bit1)
将至少为3个字节(可能会与与计算机相关的某个值对齐)字,例如4个字节)。