一道关于C语言数组的题,答案1a6是怎么算出来的呢?

#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("... #include <stdio.h>
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);
return 0;
}
若一个int类型的变量占2个字节,第一个printf语句输出的是194,则第二个printf语句输出的结果是
展开
 我来答
百度网友21a360264
2014-03-08 · TA获得超过1855个赞
知道小有建树答主
回答量:640
采纳率:100%
帮助的人:358万
展开全部
十六进制。
p+9,下标加9,每个int型大小搜弊是2字节,因此p+9比p大没芦18
第一个printf打印的194是十六进制,换算成十进制是404,加18得422,
第二个printf的格式符%x打印的也是小写的十六进制,422换算成十六进世察族制是0x1A6,因此打印的是1a6。
更多追问追答
追问
为什么还要换算成十进制呢?
追答
是考虑说的清楚。如果直接按照十六进制运算的话,十进制18就是十六进制的12,194+12=1a6。如果LZ能弄懂十六进制运算的话。
换算是换种表达方式,不管如何换算,数值还是那个数值,10公斤和10000克是一样的重量。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式