永发信息网

c++ 十六进制加法

答案:3  悬赏:40  手机版
解决时间 2021-03-23 02:28
  • 提问者网友:树红树绿
  • 2021-03-22 10:49
c++ 十六进制加法
最佳答案
  • 五星知识达人网友:毛毛
  • 2021-03-22 11:46
int *tt=(int*)0x4101b;

int *aa;
aa = tt+1;这里的加1,不是说地址加上1个字节,而是下一个整型变量的地址,一般整型变量占四个字节,所以aa的值为0x4101b+4;
同理:
aa=tt+0x1300*4;

实际上是0x4101b+0x1300*4*4;

你可以将int*改为char*试一下,对比一下结果就知道了
全部回答
  • 1楼网友:人類模型
  • 2021-03-22 13:21
这取决于int的字长,如果32位int,int*类型的指针+1,它的地址加4,如果是64位的int,int*类型+1,它所在地址就加8,
题目中tt为int*类型,tt+0x1300*4,就相当于tt所在的地址+(0x1300*4)*4
故此,输出aa既aa指针的地址就是5401b追问我要得到这个45c1b结果要怎么办。
我要用到这个指针追答直接用就行了呀,如果是要变量运算,tt+0x1300*4好像是*4的结果了,你改成tt+0x1300就可以了
  • 2楼网友:酒安江南
  • 2021-03-22 12:56
tt是一个指针?你让指针与int相加?
我看你的代码应该改成
int tt=0x4101b;
int aa=tt+0x1300*4;
cout<
int型指针加一就意味着,指针的地址增加4个字节。所以0x1300*4相当于再乘以了4

char *tt=(char*)0x4101b;
char *aa;
aa=tt+0x1300*4;
这样aa的值就成了0x45c1b了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯