当前位置: 代码迷 >> C语言 >> 有关联合体的一道题 请指教~~
  详细解决方案

有关联合体的一道题 请指教~~

热度:119   发布时间:2007-11-27 14:22:54.0
提示: 作者被禁止或删除 内容自动屏蔽
2007-11-27 06:22:54
kidd2005

等 级:新手上路
帖 子:193
专家分:0
注 册:2007-11-2
  得分:0 
就是要输出一个16进制数吧~
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]cosdos[/underline][/bold] 于 2007-11-27 14:12 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1117180&ptid=188720][/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是确定的 这样解释对不啊????
----------------解决方案--------------------------------------------------------
看这程序应该是用的int为16位的编译器,否则输出是不确定的
如果int是16位的话
则在小端机器上输出是0x3839
在大端机器上输出是0x3938
----------------解决方案--------------------------------------------------------
  相关解决方案