出个题考考大家

NackJee 2003-07-13 05:51:12
int i, a[10] ;

for (i=1 ; i<=10 ;i++)
a[i] = 0 ;

---------------------------------
上面的代码在很多编译器上(不是全部)下会陷入死循环。能说明原因吗?刚从一本书上看来的。
...全文
59 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
playboyxp 2003-07-13
  • 打赏
  • 举报
回复
同意四楼
hanker9608 2003-07-13
  • 打赏
  • 举报
回复
加一个断言看看
antijpn 2003-07-13
  • 打赏
  • 举报
回复
好像这种语句太依赖具体环境了吧?

这种东西肯定要越界的,不过死循环就要看编译器对越界的处理方法了吧?

而且各种编译器对越界的处理方法也不一样吧
hookuy 2003-07-13
  • 打赏
  • 举报
回复
在循环体后的赋值语句a[i]=0;有问题吗?
每次都赋为同样的值,变态啊
friefnd006 2003-07-13
  • 打赏
  • 举报
回复
调不出来!!!!!
xueqt 2003-07-13
  • 打赏
  • 举报
回复
harrypotter(哈里*波特) 有道理
yzykjh 2003-07-13
  • 打赏
  • 举报
回复
应该是下标越界问题。
jscsqb 2003-07-13
  • 打赏
  • 举报
回复
感兴趣ing
1cs1ak1 2003-07-13
  • 打赏
  • 举报
回复



数组越界。
VC6下确实会死循环,应该和编译器有关。



harrypotter 2003-07-13
  • 打赏
  • 举报
回复
猜想编译器分配空间的时候,先给数组a ,然后是i,造成a[10]的地址就是i的地址,当越界的时候就是给i赋值为0了。所以死循环。

不过这个应该依赖于编译器吧。
ovisa 2003-07-13
  • 打赏
  • 举报
回复
i=10的时候就出来了,越界了。
missiles 2003-07-13
  • 打赏
  • 举报
回复
int i a[10]
for(i=0;i<10;i++)
a[i]=0;
021850524 2003-07-13
  • 打赏
  • 举报
回复
表面上看是越界,至于死循环还不知道,我再试试.
guangyinsuipian 2003-07-13
  • 打赏
  • 举报
回复
printf("%d,%d",&a[10],&i);
果然地址相同
cnxiaohai 2003-07-13
  • 打赏
  • 举报
回复
波特先生,这次没用魔法棒,但说得有道理!!!!!!!!!!!!!


Davice 2003-07-13
  • 打赏
  • 举报
回复
up

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧