【发布时间】:2020-04-09 00:43:23
【问题描述】:
我知道如果 if 条件错误 if case 不会被执行,但 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);
}
}
输出
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
想要的
1 1
2 2
3 3
6 4
7 5
14 6
21 7
42 8
【问题讨论】:
-
你正在打印
divisorA[indexA]在你增加了indexA,所以你正在访问数组中的下一个元素(你已经初始化为0) -
你增加
indexA之前你打印并因此读取尚未设置的数组成员。 -
换行
++indexA;和printf("%d %d\n",divisorA[indexA],indexA); -
哦,那是愚蠢的错误。
标签: c for-loop if-statement