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,在系统中可能会出现错误。 展开
int x=5, *p = &x;
printf(“%p %d %d %d %d”, p, *p+2,**&p, 3**p, p+4);
注:格式化输出中的p为指针值,以十六进制方式输出。所有编译系统都支持这种格式。要注意如果将%p改成%d,在系统中可能会出现错误。 展开
4个回答
展开全部
楼主你好。
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为四个字节的情况下计算出来的结果,完全符合。
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为四个字节的情况下计算出来的结果,完全符合。
展开全部
0017FAC0 7 5 15 1571536
你自己把x的地址换换就可以了
你自己把x的地址换换就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0x5f00,7,7,21, 0x5f14
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0x5f00 7 0x5f00 15 24320
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询