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的第二个字节的存储空间 展开
发现错误的地方了,&a+1和p+1并不相等,不过还是那个问题,我怎么访问到a的第二个字节的存储空间 展开
2个回答
展开全部
求余运算,如果两个数都是负的,那么结果是负数或0。如果一个正一个负,那么结果是机器相关的。这时候要看如果机器运算,如果结果随分子,则结果向0取整,如果随分母,则向负无穷取整。所以,遇到负数求余,在不同机器有不同结果,避免之。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询