X定义如下,若存在
X a; a.x = 0x11223344;
则a.y[1]的值可能为()
union X{ int x; char y[4]; };
A. 11 22
B. 22 33
C. 33 44
D. 11 44
在给定的代码中,定义了一个联合类型 union X ,联合中的成员共享同一块内存空间。 已知 a.x = 0x11223344 ,这是一个十六进制整数。当以字符数组 y[4] 的视角来看这块内存时,由于内存中的字节顺序取决于系统的字节序(大端序或小端序)。 假设是小端序系统,0x11223344在内存中的存储顺序为 44 33 22 11 ,那么 a.y[0] 为 44 , a.y[1] 为 33 , a.y[2] 为 22 , a.y[3] 为 11 。 假设是大端序系统,0x11223344在内存中的存储顺序为 11 22 33 44 ,那么 a.y[0] 为 11 , a.y[1] 为 22 , a.y[2] 为 33 , a.y[3] 为 44 。 综上所述, a.y[1] 的值可能为 33 (小端序)或 22 (大端序)。
求大佬解释
fzh 回复 fzh: 好像悟了, 0x表示16进制,若小端存储,低位存储在低地址,0x44是最低位,存放在最低的地址为y[0],所以y[1]=0x33。若大端存储,高位存储在低地址,0x11是最高位,存放在最低的地址为y[0],所以y[1]=0x22
B
小端存储:和常用习惯一样...
用户登录可进行刷题及查看答案
小端存储:和常用习惯一样——低地址存低位
大端存储:高地址存低位
大小端存储要以系统而定,小端的话应该是33
登录后提交答案