求助,c语言数组问题

inta[]={6,7,8,9,10};printf("%d%d%d",a[117],a[118],a[119]);如题,这样我发现在a[118]以后的数都是0,求高人解... int a[]={6,7,8,9,10};
printf("%d %d %d",a[117],a[118],a[119]);

如题,这样我发现在a[118]以后的数都是0,求高人解释
.我让程序输出 a[117] a[118] a[119] a[120] a[121]
展开
 我来答
马固高中
2012-03-12 · TA获得超过105个赞
知道答主
回答量:58
采纳率:0%
帮助的人:37.9万
展开全部
这个数组定义中没写有几个元素,因后边有5个初始化的数,所以数组中只有5个元素.而打印a[5]以后的数据都超出了这个数组实际存储的范围.而那些区域中存的什么数是不确定的.比如,a[4]之后的那个存储器中正好存的3,那么 打印a[5]就显示3, 同理, a[118]打印出来是0,也是这种原因.
追问
http://wenku.baidu.com/view/6cc4fa7d27284b73f24250e8.html
这里是我在百度文库上找的笔试题,填空题第三题也是一样,如果不确定的话他不会出这种题吧
追答
那就只能说碰巧那几个单元都存的是0.  在实际编程中,这是有可能的. 任何时候,存储器这个硬件中都有数据. 如果本程序中并没先写入数据.它就保持本次上电后最后一次写的数据不变. 
至于最后一次写的是什么? 在本文的程序中是无法知道的. 有人说是随机数, 这个不是太准确. 其实就是最后一次写入时候的数据,只是现在不能预选确定它是几.
在目前PC计算机结构中,程序和数据都在一样的RAM中存储, 数据越界操作,也可能会操作到本程序代码区.
没都人敢说这个程序在任何平台上运行都把越界的三个数显示为 0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
臨九散人
2012-03-12 · 超过25用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:81万
展开全部
你的数组只有5个元素,最后一个是a[4]是10,a[4]以后都没有意义,值依赖于当时的运行环境,如果引用的内存没有分配,还会导致程序崩溃。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
919536816
2012-03-12 · 超过12用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:38.6万
展开全部
可能是你以前给那几个空间赋值了,当时你没删除。。。现在还保存呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sf4000
2012-03-12 · TA获得超过163个赞
知道答主
回答量:117
采纳率:0%
帮助的人:73.6万
展开全部
这只是一个随机值,不同的编译器得出的值也不一样!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱武说文看录场1508
2012-03-12 · TA获得超过292个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:173万
展开全部
你引用是数组的元素不存在呀
更多追问追答
追问
我也奇怪啊,但是我调试了,能得出结果啊,
而且好像有笔试题也这样出的
追答
看看你的显示结果
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式