struct aa
{
singed bb:4;
singed cc:4
char   dd;
}为什么sizeof(aa =5 ???是按1 bit位对齐,bb cc应该凑成一个字节才对

解决方案 »

  1.   

    signed 类型一般是4字节的
    你所写的是位字段结构
    前两个字段会放在一个signed 中如下:|________________|____|____|
     8 - 31位 为空     cc   bb  所以前两个字段4个字节,虽然只用了0 - 7位,但 8 - 31位也是存在的
    而dd为一个字节,所以一共是5个字节
    如果要为一个字节,应这样定义
    struct aa
    {
      char bb:1
      char cc:1
      char dd:1
    }
      

  2.   

    不好意思,我不知道有按BIT对齐的,我只知道有按1,2,4,8字节对齐的!
      

  3.   

    不可能,虽然是bit,但是照样占1个字节