注册 登录
编程论坛 C++教室

为什么联合体的赋值顺序不同 运行结果不同

shouabc 发布于 2010-08-11 14:30, 855 次点击
例如:
#include
union time
{ time A,B,C
A.a=2004; //D
A.b=3; //E
A.c=20; //F
B.a=A.a; //d
C.a=A.a; //e
B.b=A.b; //f
C.b=A.b;
B.c=A.c-1;
C.c=A.c+1;
cout<cout<为什么D句与F句调换后 前三项显示的结果为2003 后三项显示的结果为2005
1 回复
#2
pangding2010-08-11 16:48
联合体就是一大堆东西共用一块内存。当然先后赋值是有关系的。

你那个 time 是什么东西?你自己定义的类吗?不要举这种半截的例子,别人看不懂。
其实要想弄明白一个问题,不是把它弄的复杂,而是弄的简单。
看这个例子:
程序代码:

int main(int argc, char *argv[])
{
    union {
    int a;
    int b;
    } un;

    un.a = 5;
    un.b = 3;
    printf("%d\n", un.a);

    un.b = 3;
    un.a = 5;
    printf("%d\n", un.a);

    return 0;
}

它俩共用了一个内存,可不后写哪个就是哪个。
1