C语言求输出结果

假定x的地址是0x5f00,且假定int占2个字节。intx=5,*p=&x;printf(“%p%d%d%d%d”,p,*p+2,**&p,3**p,p+4);注:格式... 假定x的地址是0x5f00,且假定int占2个字节。
int x=5, *p = &x;
printf(“%p %d %d %d %d”, p, *p+2,**&p, 3**p, p+4);
注:格式化输出中的p为指针值,以十六进制方式输出。所有编译系统都支持这种格式。要注意如果将%p改成%d,在系统中可能会出现错误。
展开
 我来答
百度网友6567883c53
推荐于2017-09-30 · TA获得超过4737个赞
知道大有可为答主
回答量:1260
采纳率:0%
帮助的人:1385万
展开全部
楼主你好。
p为0x5f00,按%p打印p的话应该是00005F00(32位系统)
*p+2为x+2即7。(注意*的优先级比+高,先取值再+2)
**&p也就是x为5(*&其实就抵消了)
3**p就是3*x为15
p+4是一个地址,按理说应该按照%p来打印,%d打印的话应该是0x5f00换算成十进制即24320再+4*sizeof(int),也就是24320+4*2=24328。(注意这里p+4那个4是4倍的sizeof(int))
所以最终结果应该是
00005F00 7 5 15 24328
我相信我的是正确结果。

试验了下:
#include <stdio.h>
void main(){
int x=5, *p = &x;
printf("%p %d %d %d %d\n", p, *p+2,**&p, 3**p, p+4);
}
输出:
0012FF44 7 5 15 1245012

这是在x的地址为0x12ff44同时int为四个字节的情况下计算出来的结果,完全符合。
于于祥祥c94b09
2012-12-11 · TA获得超过653个赞
知道小有建树答主
回答量:766
采纳率:0%
帮助的人:306万
展开全部
0017FAC0 7 5 15 1571536

你自己把x的地址换换就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangfanliuyu
2012-12-11 · TA获得超过171个赞
知道答主
回答量:39
采纳率:0%
帮助的人:19.4万
展开全部
0x5f00,7,7,21, 0x5f14
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
snowland
2012-12-11 · 知道合伙人软件行家
snowland
知道合伙人软件行家
采纳数:1229 获赞数:7313
多次参加C++算法类竞赛获奖。

向TA提问 私信TA
展开全部
0x5f00 7 0x5f00 15 24320
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式