标题:请教大神解决一下这个怪问题
只看楼主
笑坚果
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-7-19
结帖率:100%
已结贴  问题点数:20 回复次数:15 
请教大神解决一下这个怪问题
有这样一段代码:
#includ<stdio.h>

int main()
{
    int a[10],i;
   
    for(i = 1;i <= 10;i++)
    {
        a[i] = 0;
        printf("%d\n",a[i]);
    }
    return 0;
}

看到这段代码,我以为编译会报错,像段错误之类的,但是我编译运行之后,没有报错,它循环打印9 个 0和一个9位数的一个数字,死循环。
然后我把for循环里面的 i <= 10  改成 i <= 15,打印的数依然和之前一样,9 个 0 和 一个9位数的一个数字,是死循环。
求各路大神瞧一瞧。
搜索更多相关主题的帖子: 报错 循环 打印 位数 死循环 
2017-07-21 10:47
星空微尘
Rank: 2
等 级:论坛游民
帖 子:9
专家分:25
注 册:2017-7-21
得分:0 
数组越界了
2017-07-21 10:48
Christian_Zh
Rank: 2
等 级:论坛游民
威 望:1
帖 子:7
专家分:24
注 册:2017-7-20
得分:0 
建议楼主找本书看看再写程序
或者到菜鸟教程里看看笔记也可以
2017-07-21 10:55
笑坚果
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-7-19
得分:0 
我知道是越界了,但是不清楚越界之后是怎么打印。
2017-07-21 11:01
笑坚果
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-7-19
得分:0 
有些电脑运行之后也是进入了死循环,但是没有打印任何东西。
2017-07-21 11:03
星空微尘
Rank: 2
等 级:论坛游民
帖 子:9
专家分:25
注 册:2017-7-21
得分:0 
会出现什么错误是不可预知的,有些时候可以正常运行,有些时候则会导致程序崩溃
会打印什么和内存中那个位置是什么有关
2017-07-21 11:08
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
数组越界之后打印的值没有研究的意义,那是垃圾值。
你只需要知道C语言数组的起始下标是0,最大下标是元素量-1就可以了。

[此贴子已经被作者于2017-7-21 12:12编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-07-21 12:10
笑坚果
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-7-19
得分:0 
发了这帖子感觉大家都把我当智障了 。。。
2017-07-21 16:22
笑坚果
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2017-7-19
得分:0 
为什么它成了一个死循环了呢 ?
2017-07-21 16:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 9楼 笑坚果
或许a[10]=*(&i) 当i=10时刚好修改了i的值为0~这感觉和编译器的地址分配方式有关~一种可能~不知道呢~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-07-21 17:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479522-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.391813 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved