【笔试题】有关大小端问题

来源:互联网 发布:apache安装 编辑:程序博客网 时间:2024/05/02 06:12

在X86下,有下列程序

#include<stdio.h>void main(){union{short k;char i[2];}*s, a;s = &a;s->i[0] = 0x39;s->i[1] = 0x38;int q = a.k;printf("%x\n", q);//int i = 0x12345678;//printf("%0x\n",i);system("pause");}

这是在小端机器上运行的结果,因为char 是按字节存储的,从下图可以看出先把0x39放在s->i[0]最低地址处,再把0x38放在s->i[1]次低地址处

联合体是共享内存的,a.k的存储空间和a.i是一样的,因此打印q时高位便是38地位是39,即3839.




下图帮助理解小端存储:









0 0
原创粉丝点击