C语言问题,求原因解!
main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9);}int占2...
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);
}
int占2个字节,第一个printf输出194 ,第二个输出多少?
A212 B204 C1a4 D1a6 展开
{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%x\n",p);printf("%x\n",p+9);
}
int占2个字节,第一个printf输出194 ,第二个输出多少?
A212 B204 C1a4 D1a6 展开
6个回答
展开全部
%x是输出十六进制整数
*p为地址里的内容,p为地址,这道题让输出的是地址
笨办法是把16进制开头的地址换成10进制再加,再换成16进制
简单的是把9*2=18,换成16进制是12
12+194=1a6 (16进制加法,1+9=a)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案:D。
解释:先要明白这两个printf输出的是地址,再是第一个printf输出的194是一个十六进制的数表示十进制的404,然后要知道p+9表示p指针后的第9个位置的地址,前面有说明了int占2个字节,故只要在404的基础上加18即422,然后再转换成十六进制输出就是D的答案1a6。
解释:先要明白这两个printf输出的是地址,再是第一个printf输出的194是一个十六进制的数表示十进制的404,然后要知道p+9表示p指针后的第9个位置的地址,前面有说明了int占2个字节,故只要在404的基础上加18即422,然后再转换成十六进制输出就是D的答案1a6。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果int占2个字节
则p+9 为p+9*2=194+18=1a6 十六进制加法 选D
则p+9 为p+9*2=194+18=1a6 十六进制加法 选D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选D,原因楼上的各位已经讲明了,我也不啰嗦了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
恩,这题也太入门了,各位都先下手了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询