在C语言中,多字节对象的存储是按照"小端字节序"(Little-Endian)或"大端字节序"(Big-Endian)进行存储的。

"小端字节序"是指低地址存放低位字节,高地址存放高位字节;而"大端字节序"则是低地址存放高位字节,高地址存放低位字节。

在这个程序中,变量u是一个联合体,包含一个short类型的成员i和一个char类型的数组a。联合体的存储空间是所有成员共用的,即i和a的起始地址相同。

根据小端字节序的存储规则,低地址存放低位字节,高地址存放高位字节。因此,对于变量u来说,低地址部分是u.a[0],高地址部分是u.a[1]。

所以,u.a[0]存储在低地址,u.a[1]存储在高地址。

#includestdiohint mainint argc char const argv	union		short i;		char a2;	u;	ua0 = 0x11;	ua1 = 0x22;	printf0xxn ui;	return 0;ua0为什么存储在低地址

原文地址: https://www.cveoy.top/t/topic/iBBY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录