下面这段C语言程序的运行结果是多少呢?能不能给我详细解释一下??感激不尽!!
来源:百度知道 编辑:UC知道 时间:2024/09/23 11:49:45
#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);
}
union un
{int i;
char c[2];
};
main()
{union un x;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}
int 4字节
两个char 2字节
以16进制表示一个 int 每个Xx表示一字节 就是
Xx Xx Xx Xx
低址 高址
那么两个char就是前两个Xx
程序里就是
0a 01 00 00
作为int的值就是 0x0000010a
换算成10进制吧
0
char类型是一个字节,int类型是4个字节(32位机),一开始声明的联合体x的大小是一个int,也就是四个字节,你的程序将x的头两个字节初始化为00000001 00001010,而未被初始化的高两字节仍不变,因此这个长度为4字节的内存内容为:
1100 1100 1100 1100 0000 0001 0000 1010
也就是CCCC010A,int型最高位为符号位因此是负数,十进制为:
-859045622
给点分吧!!