如何使用嵌入式结构计算联合的大小

时间:2017-10-10 19:58:38

标签: c++

#include <iostream>
union xxx
{
  uint64_t f5;
  char f4;
  struct
  {
    char f1;
    uint32_t f2;
    char f3[3];
  } abc;
};

union xxx2
{
  uint64_t f5;
  char f4;
};

struct xxx3
{
    char c;
    uint32_t c2;
};

struct xxx4
{
    char c;
    uint32_t c2;
    char c3;
};

int main()
{
    std::cout << sizeof(union xxx) << std::endl;  // 16
    std::cout << sizeof(xxx::abc) << std::endl;   // 12
    std::cout << sizeof(union xxx2) << std::endl;   // 8
    std::cout << sizeof(xxx3) << std::endl;   // 8
    std::cout << sizeof(xxx4) << std::endl;   // 12

    return 0;
}

问题&GT;联合的大小足以包含其最大的数据成员。 xxx中最大的数据成员是abc,大小为12个字节。为什么sizeof xxx是16而不是12?

0 个答案:

没有答案