码迷,mamicode.com
首页 > 其他好文 > 详细

union和struct类型大小的跨平台讨论

时间:2015-03-21 17:14:03      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:struct   union   sizeof   

这个问题的教材网上很多,我就不多说了这里给出一个:点击打开链接

这个问题又最容易引起争执,为什么呢?与平台或者说与编译器有关系,先看看下面的代码:

#include <iostream>

using namespace std;

union U1
{
    char a[9];
    int b;
};

union U2
{
    U1 a;
    double b;
};

union U3
{
    char a[10];
    double b;
};

struct S1
{
    char a[13];
    double c;
};

struct S2
{
    S1 a;
    U1 b;
};

struct S3
{
    char b;
    int c;
    char d[13];
};

int main()
{
    cout << "U1: " << sizeof(U1)<< endl;
    cout << "U2: " << sizeof(U2)<< endl;
    cout << "U3: " << sizeof(U3)<< endl;
    cout << "S1: " << sizeof(S1)<< endl;
    cout << "S2: " << sizeof(S2)<< endl;
    cout << "S3: " << sizeof(S3)<< endl;
    return 0;
}
我用了两种方法测试,测试结果如下:

(1)Ubuntu系统下,G++编译的结果如下:

技术分享

(2)Windows系统下,Cmake编译的结果如下:

技术分享技术分享

具体不是很清楚,可能是Ubuntu做了一些优化,欢迎讨论技术分享

union和struct类型大小的跨平台讨论

标签:struct   union   sizeof   

原文地址:http://blog.csdn.net/xumesang/article/details/44516121

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!