地址相加问题;;;

大大啊 2013-07-10 10:58:18
int *test =new int(100);
cout<<test<<endl;
输出:0x004c5d60

cout<<test + 1<<endl;
输出:0x004c5d64 这应该加 4个长度字节吧

cout<<test + 2<<endl;
输出:0x004c5d68 这应该是加8个长度字节吧

cout<<test + 3<<endl;
输出:0x004c5d6C 为什么是 6C

cout<<test + 4<<endl;
输出:0x004c5d70 为什么是 70

这个地址相加 怎么计算的!!
...全文
245 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
十六进制的表示形式是一个规定,你只要记住就行了. a 表示 10 b 11 c 12 d 13 e 14 f 15 0x10 16(到16就要进位了)
sduxiaoxiang 2013-07-10
  • 打赏
  • 举报
回复
0 1 2 3 4 5 6 7 8 9 A B C D E F
漫步者、 2013-07-10
  • 打赏
  • 举报
回复
4L,由于Int占4个字节,6C+4=6F+1,再由于16进制表示,满16向前进1,和十进制一样,所以等译0X...70
starytx 2013-07-10
  • 打赏
  • 举报
回复
引用 4 楼 hubaolin 的回复:
[quote=引用 1 楼 starytx 的回复:] 16进制,C就是12,60->70就是16,进了一位
如何计算 12的16进制 是 C !! [/quote]你意思是显示?ABCDEF在16进制中分别表示10,11,12,13,14,15 可以打印一下看看printf("%X" ,12);
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
注意区别下面这两个数 10 // 十进制表示 0x10 // 十六进制表示,转换为十进制相当于16 (注意:0x开头是十六进制形式)
漫步者、 2013-07-10
  • 打赏
  • 举报
回复
哎,你没有看到你的地址前面都是0X....么,很显然是16进制表示的。你再仔细想想和算算。
大大啊 2013-07-10
  • 打赏
  • 举报
回复
引用 1 楼 starytx 的回复:
16进制,C就是12,60->70就是16,进了一位
如何计算 12的16进制 是 C !!
minnnnmi 2013-07-10
  • 打赏
  • 举报
回复
十六进制 a表示 10 b表示 11 c表示 12 8+4 = c // 有什么疑问?
橡木疙瘩 2013-07-10
  • 打赏
  • 举报
回复
0x004c5d68 + 4 = 0x004c5d6C 0x004c5d6C + 4 =  0x004c5d70 有什么问题吗?
starytx 2013-07-10
  • 打赏
  • 举报
回复
16进制,C就是12,60->70就是16,进了一位

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧