#includestdiohint mainint argc char const argv union short i; char a2; u; ua0 = 0x11; ua1 = 0x22; printf0xxn ui; return 0;ua0为什么存储在低地址
在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]存储在高地址。
原文地址: https://www.cveoy.top/t/topic/iBBY 著作权归作者所有。请勿转载和采集!