c - 为什么这样会产生无限循环(C,While Loop)

标签 c loops while-loop infinite

我正在为我的类(class)做一个程序,我需要在开始之前将数组“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++;
}

提前致谢!

打印出来的是: What it prints out

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

最佳答案

当您声明一个大小为 9 的数组时,它具有从 08 的索引。您转到 9,这将覆盖内存。这是未定义的行为,可能会导致任意数量的微妙但错误的行为。

关于c - 为什么这样会产生无限循环(C,While Loop),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855868/

相关文章:

c - 在互斥锁定后递增共享变量不返回预期输出

c - 如何使用getchar在指针中存储字符?

java - 如何使用 JavaFX 使 Label 的内容在一秒后发生变化?

sql - 如何在sql中实现do-while循环

C:scanf() 和 while()(来自 C Primer Plus 的编程练习 7.10)

java - for( ; ;) 是如何无限循环的?

c - 对单精度(浮点)值求和时的错误传播

c - C语言中可以按F5键吗?

c++ - do-while循环,无限循环

引号中的python 2.7循环索引