首页 > 学院 > 开发设计 > 正文

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

2019-11-08 18:38:42
字体:
来源:转载
供稿:网友

在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.

下图帮助理解小端存储:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表