c++对象模型笔记:指针类型转换

这篇笔记说的是关于c/c++中的类型转换的东西,重点是与指针有关的类型。

1、强制类型转换

看一下这个c代码:

int a = 0x123456;  //0x是十六进制的表示法
char c = (char)a;
printf("%d/n", c);

在我的编译环境里输出的是什么呢? 是86,怎么得来的呢?(我的编译环境见“概述”)

int a的内存如下(左边是低地址的内容,右边是高地址的内容):0x56  0x34  0x12 0x00

"是不是搞反了?" 有人奇怪(正如我当年~~~~~~),这个问题还得详细讨论,但不是在这里,是在别的文章,上google搜一下“little endian”,看一下相关的知识,然后再回来看啊。(我用的是intel x86系列的cpu,所以是little endian序的)

(little endian序的内容就是:低字节数据放入低地址,高字节数据放入高地址,比如上面的56是低字节,所以放入低地址)

现在转换到char,char在我的环境里占一字节,(char)a的意思就是,取a中的第一个字节出来,就是0x56了(5 * 16 + 6 = 86)

这就是c语言中基本类型的强制类型转换。

(不知道上面的方法给了你什么启发,比如
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值