编译我的代码为C++ 11 gcc 4.8.2和llvm/clang 3.4在Fedora Linux的,我得到了奇怪的结果,我真的无法解释...这里是一个类似的计划的Fedora.
#include <iostream>
using namespace std;
struct A {};
struct C {};
struct B1 : A { union { A a;}; };
struct B2 : A { union { C c;}; };
int main()
{
cout << sizeof(B1) << " " << sizeof(B2) << endl;
}
Run Code Online (Sandbox Code Playgroud)
sizeof(B1) = 2 和 sizeof(B2) = 1
但为什么尺寸不同?实际上我有一个"为什么"的想法,但我想找到确切的解释或C++规则.