C ++ sizeof(struct)

时间:2015-11-20 07:17:25

标签: c++11

像这样的代码:

#include <stdio.h>
int main(){
  struct{
     unsigned char a:4;
     unsigned char b:4;
  }i;

  struct{
     unsigned char a:4;
     unsigned char b:4;
     unsigned char c:4;
  }j;

  i.a = 1;
  i.b = 1;
  j.a = 1;
  j.b = 1;
  j.c = 1;
  printf("size of i is: %d, size of j is: %d", sizeof(i), sizeof(j));
  return 0;
}

为什么输出为1 2?表示我拥有1个字节的大小,j拥有2个字节。我们知道unsigned char有1个字节,为什么我不等于2?我很抱歉我的英语。

1 个答案:

答案 0 :(得分:4)

C ++中的所有变量都填充到下一个字节。 在结构i中,ab都是4位,总计为1个字节。

j中,变量总和最多12位,但由于填充,大小为2字节。

参考:http://www.cplusplus.com/forum/general/51911/