| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 855 人关注过本帖
标题:为什么联合体的赋值顺序不同 运行结果不同
只看楼主 加入收藏
shouabc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-8-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
为什么联合体的赋值顺序不同 运行结果不同
例如:
#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
搜索更多相关主题的帖子: 联合体 赋值 结果 顺序 运行 
2010-08-11 14:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
联合体就是一大堆东西共用一块内存。当然先后赋值是有关系的。

你那个 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;
}

它俩共用了一个内存,可不后写哪个就是哪个。
2010-08-11 16:48
快速回复:为什么联合体的赋值顺序不同 运行结果不同
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031117 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved