【发布时间】:2015-09-23 12:43:22
【问题描述】:
我正在自学编程。我遇到了数组并试图将 for 循环的条件从 i
#include <stdio.h>
int main(void)
{
int a[5] , i , j = 0;
for (i=0;i<=5;i++)
{
a[i] = 2;
printf("%d " , a[5]);
}
return 0;
}
我再次尝试了相同的方法,但这次使用变量,但这次没有无限循环。
#include <stdio.h>
int main(void)
{
int a[5] , i , j = 0;
for (i=0;i<=5;i++)
{
a[i] = j;
printf("%d " , a[5]);
}
return 0;
}
请向我解释为什么循环在第一种情况下是无限的,而不是在第二种情况下。
【问题讨论】:
-
您需要在问题中包含代码,而不是屏幕截图。乍一看,这看起来与this question 非常相似,因此它可能是围绕未定义行为进行的积极优化,因为您在最后一次数组访问时超出了范围。
-
您正在遍历数组并且很可能在
i变量之上进行写入。未定义的行为,不要那样做。也不要将代码作为屏幕截图发布。 -
一旦您将代码添加到您的问题中,我很高兴重新投票,但如果我对上面的评论是正确的,它可能会再次关闭作为重复项。
-
我很抱歉这是我第一次在这里提出问题,我也想显示输出,这就是发布截图的原因。对不起
-
投票重新打开,它看起来与我上面链接的问题非常相似,但我无法重现。您能解释一下您使用的是哪个编译器和哪些标志吗?
标签: c arrays infinite-loop