我正在为我的课程做一个程序,我需要在开始之前将数组'decade'的所有值设置为-1。我尝试了这一点(以及for循环中的版本),这让我陷入了无限循环!有人可以解释为什么会这样吗,我该如何解决?

码:

int decade[9][9], i = 0, k = 0;
while (i<10) {
    while (k<10) {
        printf("i is %d, k is %d\n",i,k);
        decade[i][k] = -1;
        k++;
    }
    k=0;
    i++;
}


提前致谢!

它输出如下:


对于将来需要答案的任何人,请将十年声明为“ decade [10] [10]”,而不是“ decade [9] [9]”,或者定义为您。

最佳答案

当声明大小为9的数组时,它的索引从08。您进入9,它将覆盖内存。这是未定义的行为,可能会导致许多细微但有缺陷的行为。

10-06 00:57