c++16进制整型输出一个指针是怎么回事

看到了一道关于c++的题,是这样的:main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf(... 看到了一道关于c++的题,是这样的:
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;printf("%x\n",p);printf("%x\n",p+9);}
若第一个printf语句输出的是5732,则第二个printf语句的输出结果是______。答案是5749.
我想知道printf语句输出的到底是什么呢,理解不了,郁闷中。。。
展开
 我来答
lfm13720
2008-09-01 · TA获得超过1102个赞
知道小有建树答主
回答量:896
采纳率:0%
帮助的人:0
展开全部
因为 p指向的是整形数。所以 p+1 就等于p的值加上 sizeof(int),p+9 的值就是 p的值加上9*sizeof(int)。32位系统int 是32位,即4个字节,所以就是p的值加36,%x是以16进制形式输出,36转换成16进制为24,如果第一个输出5732,那么第二应该输出5732+24即5756。
我实际运行时,第一个输出为 12ff58 ,第二个输出为 12ff7c ,刚好 12ff7c-12ff58=24 (都是16进制)。
如果是16系统,即int占2个字节,那么应该是5732+12=5744,我想不通,什么情况下会得到5749。
aa77319563
2008-09-01 · TA获得超过4641个赞
知道大有可为答主
回答量:2716
采纳率:33%
帮助的人:2076万
展开全部
你是那个%X那个格式是错误的,输出是不可预计的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式