C语言的题目高手帮忙解释下 printf ("%d\n",p);printf ("%d\n",p+9);

#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%d\n",p);printf("... #include<stdio.h>
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf ("%d\n",p);printf ("%d\n",p+9);
}
若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句的输出结果是A) 212 B) 204 C) 1a4 D)1a6
这是题目......
答案选D 高手解释下下......
运行结果是
1245016
1245052
怎么解释? 它们差是36
注意输出的是p跟p+9不是*p跟*p+9
展开
 我来答
独立探索者
2010-11-22 · TA获得超过190个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:86.5万
展开全部
输出的都是指针的值。

p+9,由于p是int型指针,int占两个字节,p+9的值比p的值多2*9=18

正解应是 A 212

由于题目已经说了int为2字节,你调试的机器上int是4字节,所以会差36
sunny丶辉辉
2018-10-19
知道答主
回答量:6
采纳率:0%
帮助的人:4344
展开全部
我们计算机自己运行这道题的时候一个int型是4个字节,所以移动9位是36字节。本题的int应该是两个字节,所以移动9位是18字节。
十进制的18换算成16进制是0x12,加上194就是0x194+0x12=0x1a6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yindejia2000
2010-11-22 · TA获得超过241个赞
知道答主
回答量:188
采纳率:0%
帮助的人:131万
展开全部
这玩意打印的是指针,a是个int型的数组,他这里说int占2个字节,那p+9就是往右走了18个字节,当然这个194是十六进制显示的,你加个18看看等于几。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

推荐于2017-12-02 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.4亿
展开全部
显然不可能是选D,输出的是十进制数
应该是选A
194+2*9==212
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiank0
2010-11-22
知道答主
回答量:8
采纳率:0%
帮助的人:9.2万
展开全部
Tubor c中int为2个字节,现在很多C环境中int为4字节,比如VC++6.0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式