| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 478 人关注过本帖
标题:一道令人费解共用体题目!高手帮忙!
只看楼主 加入收藏
kate333333
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-2-16
收藏
 问题点数:0 回复次数:5 
一道令人费解共用体题目!高手帮忙!
main()
{
union
{
char ch[2];
int d;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[0],s.ch[1]);
}
在16位编译系统上,程序执行后的输出结果是:21,43


提问:为什么数组ch中ch[0]占低位,ch[1]占高位?
2007-02-16 16:50
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
因为它是共用体,共同占用同一个内存.

谁有强殖装甲第二部,可以Q我460054868
2007-02-16 16:55
kate333333
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-2-16
收藏
得分:0 

但是我不理解的是:
0x4321应该是21占低八位,43占高八位;
数组ch不应从左向右取其中的字符元素么?
如果如此,应先取到高八位的43才对???


664934112
2007-02-16 17:00
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
以下是引用kate333333在2007-2-16 16:50:52的发言:
main()
{
union
{
char ch[2];
int d;
}s;
s.d=0x4321;/*表示16进制*/
printf("%x,%x\n",s.ch[0],s.ch[1]);/*int是占用二个字节内存,char占用一个字节,而char ch[2]实际占用二个节内存,根据共用体特性和计算机特性(按人书写习惯),这就这样分配*/
}
在16位编译系统上,程序执行后的输出结果是:21,43


提问:为什么数组ch中ch[0]占低位,ch[1]占高位?

0


谁有强殖装甲第二部,可以Q我460054868
2007-02-16 17:04
kate333333
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-2-16
收藏
得分:0 
仍有疑问
见上楼内容

664934112
2007-02-16 17:05
kate333333
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-2-16
收藏
得分:0 
哦,好吧
小弟拜谢了

664934112
2007-02-16 17:06
快速回复:一道令人费解共用体题目!高手帮忙!
数据加载中...
 
   



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

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