| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 464 人关注过本帖
标题:[求助]这个程序怎么解释??
只看楼主 加入收藏
zero442
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2006-5-26
收藏
 问题点数:0 回复次数:2 
[求助]这个程序怎么解释??

今天在家看了一下共用体,有道题实在不知道怎么理解??请高手帮帮忙!让小弟解开这个疑问??
main()
{
union
{
char s[2];
int i;
}g;
g.i=0x4142;
printf("g.i=%x\n",g.i);
printf("g.s[0]=%x\t g.s[1]=%x\n",g.s[0],g.s[1]);
g.s[0]=1;
g.s[1]=0;
printf("g.s=%x\n",g.i);
getch();
}
主要就是这个程序啊!结果我在编译器上知道了啊!可是结果是怎么取得的啊??就不是很清楚啊!请帮帮小弟解答啊??

搜索更多相关主题的帖子: 解释 
2007-04-09 17:57
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
共用体的空间是体内数据中最大的数据的空间.
从程序可以知道在TC2.0中此共用体的空间占二个字节:
___
|___| <--- 如果这个字节的地址是 00000H
|___| <--- 这个字节的地址是 00001H

当执行g.i=0x4142;时,
(按照低位存在低字节,高位存高字节的原则)
___
|___| <--- 0x42
|___| <--- 0x41

当执行printf("g.i=%x\n",g.i); 结果:4142

当执行printf("g.s[0]=%x\t g.s[1]=%x\n",g.s[0],g.s[1]);
(因为g.s[0]的地址是第一字节,g.s[1]的地址是第二个字节)
所以:g.s[0]的值是0x42 g.s[1]的值是0x41
结果:42 41

当执行
g.s[0]=1;
g.s[1]=0;
时 字节空间的值改为:
___
|___| <--- 0x01
|___| <--- 0x00

当执行:printf("g.s=%x\n",g.i);时
(因为这时g.i的值是0x0001)
结果:1

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-09 18:27
w362034710
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2006-12-2
收藏
得分:0 

对共用体不是很清楚......长知识了...

2007-04-09 21:31
快速回复:[求助]这个程序怎么解释??
数据加载中...
 
   



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

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