C for循环中的indexNumber不增加
我的想法是,如果if条件错误则不会执行if情况,但for循环仍将继续。但不知怎的,我被这个简单的问题绊住了C for循环中的indexNumber不增加,c,for-loop,if-statement,C,For Loop,If Statement,我的想法是,如果if条件错误则不会执行if情况,但for循环仍将继续。但不知怎的,我被这个简单的问题绊住了 int divisorA[20]={0},indexA=0,a=42; for (int i =1;i<a+1;++i){ if (a % i == 0){ divisorA[indexA] = i; ++indexA; printf("%d %d\n",divisorA[indexA]
int divisorA[20]={0},indexA=0,a=42;
for (int i =1;i<a+1;++i){
if (a % i == 0){
divisorA[indexA] = i;
++indexA;
printf("%d %d\n",divisorA[indexA],indexA);
}
}
渴望的
1 1
2 2
3 3
6 4
7 5
14 6
21 7
42 8
一个简单的方法是,您正在打印索引数组值/after/您已经增加了索引,因此它会向前移动下一个未填充的插槽,即零。一个简单的方法是,您正在打印索引数组值/after/您已经增加了索引,因此它会向前移动下一个未填充的插槽,零。您首先增加了索引,然后才在尚未设置的索引位置输出数组元素
++indexA;
printf("%d %d\n",divisorA[indexA],indexA);
写
请注意,C中的索引从0开始。您首先增加了索引,然后才在尚未设置的索引位置输出数组元素
++indexA;
printf("%d %d\n",divisorA[indexA],indexA);
写
注意C中的索引从0开始。在递增
indexA
之后,您正在打印divisiora[indexA]
,因此您正在访问数组中的下一个元素(已初始化为0)在打印之前增加indexA
,从而读取尚未设置的数组成员代码>和printf(“%d%d\n”,除数[indexA],indexA)代码>哦,那是一个愚蠢的错误。你在递增indexA
之后打印divisiora[indexA]
,因此你正在访问数组中的下一个元素(你已经初始化为0)。你在打印之前递增indexA
,从而读取尚未设置的数组成员。交换行++indexA代码>和printf(“%d%d\n”,除数[indexA],indexA)哦,那是个愚蠢的错误。
++indexA;
printf("%d %d\n",divisorA[indexA-1],indexA);