yymiaoxin2010 2017-11-22 17:17 采纳率: 72.7%
浏览 974
已采纳

vs十六进制数相减为什么不对啊

iCount 形参=4;它是通过pText-Begin-5得出来的。那么问题来了 pText等于0x012ca07a,pBegin等于0x012ca070,按理来说是a-1等于9啊 ,为什么会等于4?
图片说明图片说明

  • 写回答

1条回答 默认 最新

  • qq_40774221 2017-11-22 22:34
    关注

    对于编译器而言,指针只有同类型才能相减,同类型的指针相减的结果就是 2个指针变量指向的地址数值相减的结果 再去除以指向的对象类型大小
    你的这个问题 指向的对象类型wchar_t(2字节的宽字符) wchar_t* pText 和 wchar_t*pBegin. pText - pBegin 对于编译而已他会解释
    为取pText的指向地址数值0x012ca07a 取pBegin指向地址的数值0x012ca070 相减在除指向的对象类型大小,
    就是(x012ca07a-0x012ca070)/sizeof(wchar) = 5 (sizeof(wchar_t) = 2).
    _编译器就是这么帮你编译的没有为什么. 如果是int* p1 ,int *p2;这样 指向的对象类型是int 最后就是除以4 因为sizeof(int)就是4 .
    如果是个结构体譬如struct Age{int Year;int Month,;int Day;} 在对齐是4的情况下就是除以sizeof(Age) = 12. 不一定说的清楚,感觉解释就这么
    拗口,你就当个参考,还是不懂到处找找指针的资料看看.
    _

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建