实际上我是用在线c编译器编译的,代码输出为5 ...处理是如何进行的?
#include <stdio.h>
int main()
{
struct ab {char a,b;};
union abcd
{
int c;
struct ab d;
}k;
k.d.a=5;
k.d.b=0;
printf("%d",k.c);
}
答案 0 :(得分:1)
您在整数和包含2个字符的结构之间具有并集。
代码正在更改结构的第一个字符。由于存在联合,它将影响另一个联合成员的第一个字节,即整数。
在小端机上,将整数的第一个字节设置为5会使该整数5,这就是您在此处看到的。
在big-endian计算机上,根据整数的实际大小,您最终得到一个非常大的值。