下述程序的执行结果是

来源:百度知道 编辑:UC知道 时间:2024/05/09 14:16:31
#include<stdio.h>
union un
{
int i;
char c[2];
}
main()
{
union un x;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x,i);
}
上面的有点错误了,改为
#include<stdio.h>
union un
{
int i;
char c[2];
}
main()
{
union un x;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}

答案是266

266(没有运行不知道对不对,不过16进制的应该是:0x010A)
主要考察union
共用体结构的特点是
1、共用体变量所占的内存长度等于最长的共用体成员的长度;
2、共用体的成员都是从同一个内存地址开始存放。

结果是乱的,因为在32位机上,int为四个字节,故变量x的高两个字节没有被初始化,低两个字节分别为x.c[1],x.c[0]的值.

266=256+10