在下面的代码中,
#include<stdio.h>
typedef struct {
int bit1:1;
int bit3:4;
int bit4:4;
} node;
int main(){
node n,n1,n2,ff[10];
printf("%d\n",sizeof(node));
return 0;
}
如何预测结构的大小?
答案 0 :(得分:9)
如果不知道编译器及其编译的目标平台,就无法预测它。
答案 1 :(得分:3)
答案 2 :(得分:3)
一般来说不可预测,但实际上它经常会出现sizeof(int)。这通常是4;不太常见2,肯定有8次。
大多数情况下,位字段将被打包,并且大多数情况下int类型将具有9位或更多位存储。
答案 3 :(得分:1)
您会发现结构的大小会根据编译器优化设置而改变。我预测这个结构的位置在2到12个字节之间。
即使像你一样使用位字段,也无法始终预测结构的大小。编译器可能让每个位字段占用int的整个空间,或者可能只占用您指定的1或4位。使用位字段虽然内存存储空间很大,但通常不利于运行时和可执行文件大小。
答案 4 :(得分:0)
通常每个编译器决定如何打包联合,因此您无法对最终大小做出许多假设。他们可以根据参数决定不同的布局。
答案 5 :(得分:0)
添加位字段大小,除以8 * sizeof(int),并取该值的上限。在你的例子中,它将是4。