for循环在C中没有正确递增

时间:2013-10-09 21:59:59

标签: c for-loop

我正在运行一个基本循环来检查二维数组上对角元素的值:

//Check upper diagonal
for (i = 0; i < n; i++){
    for (j = i+1; j<(n-1); j++){
        printf("n: %d i: %d j: %d\n",n, i, j);
        if (myA[i][j] > pow(10,-13)) return 0;
    }
}

但是,此代码无法准确检查我想要的元素。我放在内部循环中的print语句给出了以下输出:

n: 4 i: 0 j: 1
n: 4 i: 0 j: 1
n: 4 i: 0 j: 2
n: 4 i: 1 j: 2

特别具有挑战性的部分是在第一行和第二行之间。看起来j在中间循环的第一次迭代之后没有增加,正如我所期望的那样。

为什么输出的第二行显示j: 2

1 个答案:

答案 0 :(得分:4)

输出的第二行未显示j: 2,因为您的循环已由return 0终止。输出的第二行实际上是对包含此代码的函数的另一个调用的结果。

您可以通过在内循环中注释掉if语句来轻松测试:

//Check upper diagonal
for (i = 0; i < n; i++){
    for (j = i+1; j<(n-1); j++){
        printf("n: %d i: %d j: %d\n",n, i, j);
        //if (myA[i][j] > pow(10,-13)) return 0;
    }
}