关于C语言联合体的问题
#include<stdio.h>union{inti;charx[2];}a;voidmain(){a.x[0]=10;a.x[1]=1;printf("%d",a.i...
#i nclude <stdio.h>
union
{
int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
这个程序输出是什么 ?帮忙解释一下怎么回事。 展开
union
{
int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
这个程序输出是什么 ?帮忙解释一下怎么回事。 展开
5个回答
展开全部
在VC6.0下运行,输出的是266。
我觉得是这样的:
union是所有的变量共用同一块内存。其大小就是其包含的变量中最大的数据类型。
本题中应该是4B,也就是int的大小。
当执行a.x[0] = 10; a.x[1] = 1;时,存储形式是000100001010(其长度应该是32,省略前面的0)
其中的0001就是a.x[0]中的十位数字1,一次类推。
当你输出a.i时,程序就把000100001010当成int型输出。
二进制的0000100001010就是266。
这是我根据答案推测的,不知道对不对。
我觉得是这样的:
union是所有的变量共用同一块内存。其大小就是其包含的变量中最大的数据类型。
本题中应该是4B,也就是int的大小。
当执行a.x[0] = 10; a.x[1] = 1;时,存储形式是000100001010(其长度应该是32,省略前面的0)
其中的0001就是a.x[0]中的十位数字1,一次类推。
当你输出a.i时,程序就把000100001010当成int型输出。
二进制的0000100001010就是266。
这是我根据答案推测的,不知道对不对。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内存共享如下:
int i; 字节1 字节2 字节3 字节4 (共四个字节)
char x[2] x[0] x[1]
对整数值为 (字节1)+256*(字节2)+ 256*256*(字节3)+ 256*256*256*(字节4)
下面根据上面的公式计算输出的!!!
这个程序输出是这样:
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
那么输出为:266 (10+256*1==266 高2字节为0)
int i; 字节1 字节2 字节3 字节4 (共四个字节)
char x[2] x[0] x[1]
对整数值为 (字节1)+256*(字节2)+ 256*256*(字节3)+ 256*256*256*(字节4)
下面根据上面的公式计算输出的!!!
这个程序输出是这样:
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
那么输出为:266 (10+256*1==266 高2字节为0)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出结果的话要去查表的
union是里面所有数据使用同一个内存里的,只不过读取的时候不一样
此例中,这个union只占1个int的内存 int=2Byte,char=1Byte
在内存中的结果是int的前面1个Byte赋的是a.x[0],第2个Byte是a.x[1]
union是里面所有数据使用同一个内存里的,只不过读取的时候不一样
此例中,这个union只占1个int的内存 int=2Byte,char=1Byte
在内存中的结果是int的前面1个Byte赋的是a.x[0],第2个Byte是a.x[1]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出时 266,首先联合体所有数据共占一个空间,这个你必须知道!
int 占 4个 字节,char x[2]占两个字节,所以你这个是占四个字节!
你的数据第一个字节被“10”占据,要转化成ascii码!
你的数据第二个字节被“1”占据,要转化成ascii码!
转化结果你自己查书看下就可以了!
int 占 4个 字节,char x[2]占两个字节,所以你这个是占四个字节!
你的数据第一个字节被“10”占据,要转化成ascii码!
你的数据第二个字节被“1”占据,要转化成ascii码!
转化结果你自己查书看下就可以了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个跟计算机字节序有关的,可能是26,或是161
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询