| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 385 人关注过本帖
标题:C询问一个关于结构体的问题 。
只看楼主 加入收藏
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:7 
C询问一个关于结构体的问题 。
C询问一个关于结构体的问题 。
31.有以下程序:
#include <stdio.h>
union pw
{ int i;
  char ch[2];}a;
main()
{a.ch[0]=13;a.ch[1]=0;printf(″%d\n″,a.i);}
程序的输出结果是(   
A.13     
B.14     
C.208     
D.209

我理解的是:共用体只能存一个数据的,所以main中每输入一个前一个就给替换了,所以a.i我认为应该是0的 ,但是结果为何是13呢 ! 求帮助
本人水平有限  希望解释通俗易懂一点哦   3Q
搜索更多相关主题的帖子: 结构体 include 
2011-09-06 14:22
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:3 
此题好像已经回答过了
2011-09-06 14:23
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
收藏
得分:0 
好像没听懂!
2011-09-06 14:39
fourleaves
Rank: 2
等 级:论坛游民
帖 子:194
专家分:99
注 册:2010-5-8
收藏
得分:3 
这是联合体好不。。。。楼主先去好好看书吧。。。别老做题。。。。把基础打扎实再说

再复杂的问题也基于最简单的原理。耐心,耐心!丰富自己!等待时机!
2011-09-06 16:03
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
收藏
得分:0 
LIANHETI
2011-09-16 16:38
jbddd
Rank: 2
等 级:论坛游民
帖 子:45
专家分:24
注 册:2009-7-26
收藏
得分:0 
union的最小单位是char数组,你是打印%d,所以只答应数组的第一个元素13
2011-09-16 17:01
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 6楼 jbddd
请看教材,如果连基础知识都不明白,就别先做题了

总有那身价贱的人给作业贴回复完整的代码
2011-09-16 18:38
nextleave
Rank: 2
等 级:论坛游民
帖 子:52
专家分:92
注 册:2011-9-12
收藏
得分:0 
我觉得对初学者要耐心.这样.该联合体的名字其实代表了一块内存地址.也就是说a的值其实是一块内存的第一个字节(也就是低字节)的地址值,这一点与数组名类似.而a的数据类型决定于你怎么用它.当你给ch的两个元素赋值时,你就是把a当做一个字符数组.该数组第一个元素是13,第二个元素是0.在内存中的表示是该内存块的第一个字节存储13,接下来的一个字节存储0.而当你以int型访问这块内存时,这块内存的内容并没有变化.但是这块内存现在被视为存储着一个int型数据的内存,占有四个字节(原来是被视为存储着两个字符的占有两个字节的内存块).但是这个内存块的四个字节中高两个字节是0,接下来的两个字节一个存储着0,一个存储着13.也就是说从高地址到低址的四个字节分别存储是是0,0,0,13.这个int值就是13了.楼主明白了吗?
2011-09-16 19:28
快速回复:C询问一个关于结构体的问题 。
数据加载中...
 
   



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

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