Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C for循环中的indexNumber不增加_C_For Loop_If Statement - Fatal编程技术网

C for循环中的indexNumber不增加

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]

我的想法是,如果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],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);