关于结构体,联合体,位字段的大小的

来源:互联网 发布:python mysql 批处理 编辑:程序博客网 时间:2024/05/17 09:26
struct A{int a;short b;int d;char c;union {int g;int ar[3];double f;};};struct B{int a;short b;struct {char e;int f;};char c;int d;};struct C{int a;char arr[20];char b;int c;float d;char brr[30];};struct D{int a : 8;char b : 7;};int main(){//结构体大小:上面的字节数必须为下面的倍数;总的大小必须是单个最大元素的倍数。//printf("%d\n", sizeof(A));//4,2+2->4,4,1+3->4 》16   union的:最大的成员为 int ar[3],3*4->12个字节,然后需要整除单个最大元素(double),所以就为16字节了//printf("%d\n", sizeof(B));// 4,2,1+1->2,4 》12   带内嵌结构体的(先算内嵌里的):4,2+2->4,1+3->4,4,1+3->4,4 》24//printf("%d\n", sizeof(C));//4,20,1+3->4,4,4,30+2 》68//printf("%d\n", sizeof(D));//同类型的,位数相加然后除8,然后得到字节数(如果结果是小数,向上取整),然后往上凑,是此类型大小(char 1  int 4...)的倍数就行。8+32->40 40/8->5 5+3->8 所以,为8个字节。不同类型的,直接按照正常结构体算.return 0;}

阅读全文
0 0
原创粉丝点击