【发布时间】:2012-10-12 04:17:08
【问题描述】:
我正在尝试其他方法,但突然卡住了这个无限循环。 请提出一个答案,并解释下面的 for 循环中发生的事情
#include<stdio.h>
int main()
{
int x=0;
int i;
int array[5];
for(i=0;i<=5;i++)
{
array[i]=x;
printf("#%d value set in index %d\n",x,i);
}
return 0;
}
当我删除= 在for 循环的条件下登录它工作正常。
但是当我把它放到无限循环中时,为什么? 访问数组中的额外元素(超过其限制)是未定义的行为还是什么? 任何帮助将不胜感激。 提前致谢。
~
【问题讨论】:
-
寻求明确由于故意错误导致的未定义行为是浪费时间......你的电脑还不如飞到火星..
-
是的,访问数组中的额外元素(超过其限制)是“未定义的行为”。它可能会在您的中显示无限循环,在另一个编译器/pc/系统中它可能会以不同的方式表现。最好不要在未定义的行为之后浪费时间,并检查您的代码并按照标准修复问题(在这种情况下,在 'for' 循环的条件下制作 'i