我定义了下面的联合体:typedef union
{ /* a byte can be seen as */
char HY_SC; /* a 1 byte signed integer */
unsigned char HY_UC; /* a 1 byte unsigned integer */ struct
{
unsigned int HY_L:4; /* left digit */
unsigned int HY_R:4; /* right digit */
} HY_DIGITS; /* two digits */
struct
{
unsigned int HY_b1:1; /* bit 1 */
unsigned int HY_b2:1; /* bit 2 */
unsigned int HY_b3:1; /* bit 3 */
unsigned int HY_b4:1; /* bit 4 */
unsigned int HY_b5:1; /* bit 5 */
unsigned int HY_b6:1; /* bit 6 */
unsigned int HY_b7:1; /* bit 7 */
unsigned int HY_b8:1; /* bit 8 */
} HY_BITS; /* 8 different bits */} HYM_SPR_BYTE; /* useful structures within a byte */但是当用sizeof(HYM_SPR_BYTE)取长度时,得到的却是4(我想应该是1的)。
用#pragma pack (1) 还是同样的结果。用的环境是WIN2000(PENTIUM M),VS6。
请问怎么样才能得到1。
{ /* a byte can be seen as */
char HY_SC; /* a 1 byte signed integer */
unsigned char HY_UC; /* a 1 byte unsigned integer */ struct
{
unsigned int HY_L:4; /* left digit */
unsigned int HY_R:4; /* right digit */
} HY_DIGITS; /* two digits */
struct
{
unsigned int HY_b1:1; /* bit 1 */
unsigned int HY_b2:1; /* bit 2 */
unsigned int HY_b3:1; /* bit 3 */
unsigned int HY_b4:1; /* bit 4 */
unsigned int HY_b5:1; /* bit 5 */
unsigned int HY_b6:1; /* bit 6 */
unsigned int HY_b7:1; /* bit 7 */
unsigned int HY_b8:1; /* bit 8 */
} HY_BITS; /* 8 different bits */} HYM_SPR_BYTE; /* useful structures within a byte */但是当用sizeof(HYM_SPR_BYTE)取长度时,得到的却是4(我想应该是1的)。
用#pragma pack (1) 还是同样的结果。用的环境是WIN2000(PENTIUM M),VS6。
请问怎么样才能得到1。
-->
unsigned char
unsigned修饰只是将int定为无符号,所以unsigned int 本来就是4个字节
二楼OK
unsigned int 本来就是4个字节
^-^