标题:有关联合体的一道题 请指教~~
只看楼主
夜礼服假面
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188720-1-1.html




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

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