
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 展开
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 展开
5个回答
展开全部
输出的都是指针的值。
p+9,由于p是int型指针,int占两个字节,p+9的值比p的值多2*9=18
正解应是 A 212
由于题目已经说了int为2字节,你调试的机器上int是4字节,所以会差36
p+9,由于p是int型指针,int占两个字节,p+9的值比p的值多2*9=18
正解应是 A 212
由于题目已经说了int为2字节,你调试的机器上int是4字节,所以会差36
展开全部
我们计算机自己运行这道题的时候一个int型是4个字节,所以移动9位是36字节。本题的int应该是两个字节,所以移动9位是18字节。
十进制的18换算成16进制是0x12,加上194就是0x194+0x12=0x1a6
十进制的18换算成16进制是0x12,加上194就是0x194+0x12=0x1a6
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这玩意打印的是指针,a是个int型的数组,他这里说int占2个字节,那p+9就是往右走了18个字节,当然这个194是十六进制显示的,你加个18看看等于几。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显然不可能是选D,输出的是十进制数
应该是选A
194+2*9==212
应该是选A
194+2*9==212
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Tubor c中int为2个字节,现在很多C环境中int为4字节,比如VC++6.0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询