下面这段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);
}

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

给点分吧!!