struct与union相关问题

typedef union
{
    long i;
    int k[5];
    char c;
}Date;
struct data
{
    int cat;
    Date cow;
    double dog;
}animal;

在64位机器下,cout<<sizeof(Date)+sizeof(animal)<<endl;等于多少?
64位机器,sizeof(long)=8 sizeof(int)=4 sizeof(double)=8
我所知道的是union中变量共享空间,struct里要字节对齐。

阅读 3.3k
2 个回答

我再自己两台电脑上试验结果,第一台苹果macbookpro,64位输出如图,第二台,2013年入的hp envy4,输出20 32(这个可以理解),64位输出真的无法解释,可能跟平台和编译器相关。
图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进