for循环在C中不能正确递增
我正在运行一个基本循环来检查二维数组的上对角线元素的值:for循环在C中不能正确递增,c,for-loop,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; } } 特别具有挑战性的部分在第一行和第二行之间。在中间循环的第
//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;
}
}
特别具有挑战性的部分在第一行和第二行之间。在中间循环的第一次迭代之后,j似乎没有像我预期的那样递增
为什么我的输出的第二行不显示
j:2
?输出的第二行不显示j:2
,因为循环被返回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;
}
}
//检查上对角线
对于(i=0;i
输出的第二行不显示j:2
,因为循环被返回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;
}
}
//检查上对角线
对于(i=0;i
我不相信你!显示完整的程序。删除除循环和printf之外的所有内容。移除if。应该是10行代码。我猜如果语句是真的,并且你返回的时间比你想象的要早,那么你应该是。如果您提供一个示例,我相信这会更有意义。是否整个代码段运行了两次,而第二行是第二次运行的开始?也就是说,for循环的第一次运行命中了if
语句,它是真的,并且返回了。另外,我认为您可以只执行1e-13
,而不是每次调用pow
。对所有人来说-Oops-意味着键入-myA
的内容是什么(这是漫长的一天)我不相信你!显示完整的程序。删除除循环和printf之外的所有内容。移除if。应该是10行代码。我猜如果
语句是真的,并且你返回的时间比你想象的要早,那么你应该是。如果您提供一个示例,我相信这会更有意义。是否整个代码段运行了两次,而第二行是第二次运行的开始?也就是说,for循环的第一次运行命中了if
语句,它是真的,并且返回了。另外,我认为您可以只执行1e-13
,而不是每次调用pow
。对所有人来说-Oops-意味着键入-myA
的内容是什么(这是漫长的一天)正确。下次我会用SSCE,我的道歉。正确。对不起,下次我会用SSCE。