结构体的大小求解
struct
{char T:4;
char K:4;
unsigned short i:8;
unsigned long m;
}
求sizeof(A)
(1)考虑位对其的值
(2)不考虑位对其的值
虚心求教,最好有详细解说 谢谢了
[解决办法]
使用:
#pragma pack( [ n] )
改变n的值,直接输出sizeof(A)不就可以看到么?自己动手试试,再去理解吧。。
[解决办法]
32位系统下,不对齐7,对齐8
相当于:
struct
{
char TandK;
unsigned short i;
unsigned long m;
}
[解决办法]
32位操作系统:
1、需要单字节对齐时如下
struct A
{char T:4;
char K:4;
/*上面的两个char总共占8位也就是一个字节*/
unsigned short i:8;//这个还是2字节
unsigned long m;//这个是4字节
};
所以siziof(A)=7
2、需要4字节对齐时如下
struct A
{char T:4;
char K:4;
unsigned short i:8;
/*上面3个总共占4字节*/
unsigned long m;//这个4字节
};
所以sizeof(A)=8
64位的操作系统只是sizeof(unsigned long)=8,上面所得结果分别再+4就是最终计算结果
[解决办法]
struct
{char T:4;
char K:4;
unsigned short i:8;
unsigned long m;
}
32位平台,4字节对齐:
1+(1)+2+4=8