谁能帮我解释这段代码的处理过程
Can anyone help me with the explanation of the processing of this snippet of code
实际上我是在在线 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);
}
你有一个整数和一个包含 2 个字符的结构之间的联合。
代码正在更改结构的第一个字符。因为联合,它影响了另一个联合成员的第一个字节,即整数。
在 little-endian 机器上,将整数的第一个字节设置为 5 会使该整数为 5,这就是您在此处看到的内容。
在 big-endian 机器上,根据整数的实际大小,您最终会得到一个非常大的值。
实际上我是在在线 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);
}
你有一个整数和一个包含 2 个字符的结构之间的联合。
代码正在更改结构的第一个字符。因为联合,它影响了另一个联合成员的第一个字节,即整数。
在 little-endian 机器上,将整数的第一个字节设置为 5 会使该整数为 5,这就是您在此处看到的内容。
在 big-endian 机器上,根据整数的实际大小,您最终会得到一个非常大的值。