| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1215 人关注过本帖
标题:有关联合体的一道题 请指教~~
只看楼主 加入收藏
夜礼服假面
Rank: 1
等 级:禁止访问
帖 子:92
专家分:0
注 册:2007-11-26
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2007-11-27 14:22
kidd2005
Rank: 1
等 级:新手上路
帖 子:193
专家分:0
注 册:2007-11-2
收藏
得分:0 
就是要输出一个16进制数吧~

潜心苦C,却发觉百C不得其解啊~
2007-11-27 16:28
叶柄
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-10-17
收藏
得分:0 
原帖由 [bold][underline]cosdos[/underline][/bold] 于 2007-11-27 14:12 发表 [url=http://bbs.][/url]
printf("%x\n", a.k);

a.k 没有被赋值,所以输出的数据无法确定。

a.k = 0xEC28;
printf("%x\n", a.k);  /* 以十六进制输出数字*/



#include <stdio.h>
    void main()
    {
        union
        {
            int     k;
            char    i;
        }a;
  a.k=86;
  printf("%c\n", a.i);

    }




#include <stdio.h>
    void main()
    {
        union
        {
            int     k;
            char    i;
        }a;
  a.i='V';
  printf("%c\n", a.k);

    }



呵呵有区别   int 的 空间比 char的大 所以对char赋值时 int是不定的  可对int赋值时char是确定的 这样解释对不啊????
2007-11-27 17:40
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:0 
看这程序应该是用的int为16位的编译器,否则输出是不确定的
如果int是16位的话
则在小端机器上输出是0x3839
在大端机器上输出是0x3938

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2007-11-27 22:38
快速回复:有关联合体的一道题 请指教~~
数据加载中...
 
   



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

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