c - 谁能帮我解释一下这段代码的处理过程
问题描述
实际上我在一个在线 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,这就是您在此处看到的内容。
在大端机器上,您最终会得到一个非常大的值,具体取决于整数的实际大小。
推荐阅读
- python-3.x - 如何在 Python3 中将日志记录与多处理一起使用
- windows - 损坏的包管理器?找不到模块提供程序 (PowerShellGet)
- azure - 获取 Azure Log Analytics 免费层
- html - 使Div中的图像不调整大小
- r - 在 UI 出现后延迟加载 Shiny 中的库,但在实际需要之前
- python - 如何查找文件中有多少个相同的单词?
- c++ - 在 C++ 中格式化文本文件
- python - 从对象列表中提取特定属性列表
- visual-studio - 如何通过 USB 与应用程序/程序通信
- android - Android 画布点击不可用