c语言里共用体的最后一次成员赋值问题求解 - 爱问答

(爱问答)

c语言里共用体的最后一次成员赋值问题求解

int main( )
{
    union exa
    {
        struct
        {
            int a;
            int b;
        }out;
        int c;
        int d;
    }e;
    e.out.a=10;   
    e.out.b=20;
e.c=2;
e.d=5;     
printf("%d,%d ",e.out.a, e.out.b);
    return 0; 
}

struct st
{
    int a;
    int b;
    union
    { 
        int e;
        int f;
    }c;
};
int main( )
{
    struct st y;   
    y.a=10;     y.c.e=20;     y.c.f=y.a;
    y.b=y.c.e;   
    printf("%d,%d ",y.c.e,y.c.f);
    return 0; }

union out
         {
             int a[2];
             struct
             {
                 int b;
                 int c;
             }in;
             int d;
         };
         int main()
         {
             union out e;
             int i;
             e.in.b=1;     e.in.c=2;     e.d=3;     for(i=0;i<2;i++)
                 printf("%5d",e.a[i]);
             printf(" ");
             return 0; }
求解三个程序结果

一。对union exa:
exa.out.a=out.c=out.d
而exa.out.b因内存对齐(它在a后面),所以是独立的
所以结果
exa.out.a=e.d=5;    
exa.out.b=20
二。对结构体st,
a,b,c是三个独立的变量,而c.e=c.f是同一地址
最终:
y.c.f=y.a=10
而y.c.e=y.c.f=10
三。对out
a[0]=in.b=d
a[1]=in.c
所以结果
a[0]=e.d=3
a[1]=e.in.c=2

相关标签:c语言

下一篇:voidmyprint(point*posi,intn);

上一篇:共用体的最后一次赋值问题

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?