关于int类型数据在内存中的高低位存储问题

最近在给学生讲课的时候,学生问到,对于一个c语言编写的程序,一个int类型的数据,在内存中是如何存储的。

例如:int类型的1在内存中占用4个字节,那这4个字节具体怎么存储呢?

目前市面上大部分书籍说的都是数字的字节表示形式,按照二进制的方式进行存储。学生就理所当然的认为是按照下面方式进行存储的。

第1字节                 第2字节                  第3字节               第4字节

00000000            00000000             00000000           00000001

但是我告诉他们实际上并不是这样存储的,而是低位在前,高位在后的方式存储的,也就是按照下面的方式

第1字节                 第2字节                  第3字节               第4字节

00000001            00000000             00000000           00000000

学生们就觉得有点不太好理解,于是就写了一段小程序来检验一下,看看是否是我说的这种方式进行存储。


#include <stdio.h>


int main(){
	int i = 1;
	unsigned char * p = (unsigned char *)(&i);
	printf("第1字节:%d,第2字节:%d,第3字节:%d,第4字节:%d\n",*p,*(p+1),*(p+2),*(p+3));
}

于是他们按照我的这个思路,对所有的基本数据类型都做了一个检测,并且对结构体等复杂类型的内存存储方式都做了一个检验,对数据类型在内存中的存储方式的理解又深入了一步。

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值