C++获取内存地址值怎么是负数? 5

最新刚学C++,假定inta=5;int*p=&a+1;我知道int数据类型需要4个字节存储,所以假设&a的值是00ABCD0的话,那么这个00ABCD0指向的数据应该是... 最新刚学C++,假定int a = 5;int *p = &a+1;我知道int数据类型需要4个字节存储,所以假设&a的值是00ABCD0的话,那么这个00ABCD0指向的数据应该是a的占用4个字节中的第一个吧,就是0x21,那么第二到第四个字节就是空着的啊,为什么我用指针指向下一个也就是p的时候,cout<<*p<<endl得到的是一个负数值呢?难道说指针每次移一位都是移过4个字节的存储空间吗,如果是这样,我还能不能访问到这个a的第二个字节?
发现错误的地方了,&a+1和p+1并不相等,不过还是那个问题,我怎么访问到a的第二个字节的存储空间
展开
 我来答
笪璞梁辰韦
2020-07-11 · TA获得超过1077个赞
知道小有建树答主
回答量:1758
采纳率:100%
帮助的人:8.1万
展开全部
求余运算,如果两个数都是负的,那么结果是负数或0。如果一个正一个负,那么结果是机器相关的。这时候要看如果机器运算,如果结果随分子,则结果向0取整,如果随分母,则向负无穷取整。所以,遇到负数求余,在不同机器有不同结果,避免之。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gz_chatbot
2015-10-07 · 超过85用户采纳过TA的回答
知道小有建树答主
回答量:223
采纳率:0%
帮助的人:83.3万
展开全部
chat * tmp = (char*)p
然后访问tmp+1。可以 cout << *(int*)tmp <<endl
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式