在c中手执行,不明白索引-1的含义

时间:2017-10-26 08:43:43

标签: c

我有这个代码,我正在尝试从中执行手动执行,但我不确定index - 1是做什么的。我的结果应该是1,5,6,8,9还是1,3,5,6,8还是我完全错了?

void main() {
    int array[5] = {1,3,4,6,7};
    int index;

    for (index = 1; index < 5; index++) {
    array[index] = array[index - 1] + 2;
    }
}

1 个答案:

答案 0 :(得分:1)

启动循环前数组中的

值:1,3,4,6,7

index的值设置在for循环的每次迭代的顶部 因此,第一次循环时,index设置为表示值1

  • 因此index-1会保留值1-10
  • 因此array[index - 1]array[0]
  • 相同
  • array[0]包含值1
  • 因此array[index - 1] + 21 + 23
  • 相同
  • 然后,我们指定array[index]我们知道代表array[1] 用于保存3 的值,现在被分配给({} )保持值3
第一次通过循环结束时

数组中的值:1,3,4,6,7

现在,回到循环的顶部.. index被告知1增加index 即:2 为1 ,现在代表数字index-1

  • 因此2-1会保留值1array[index - 1]
  • 因此array[1]array[1]相同,
  • 3包含值array[index - 1]
  • 所以3 + 2 + 2,相当于5array[index]
  • 然后,我们分配array[2]我们知道它代表元素4曾经保存5的值),现在已分配保持值array index index-1 array[index-1] array[index-1]+2 array[index] 1,3,4,6,7 1 0 1 3 array[1] = 3 1,3,4,6,7 2 1 3 5 array[2] = 5 1,3,5,6,7 3 2 5 7 array[3] = 7 1,3,5,7,7 4 3 7 9 array[4] = 9 1,3,5,7,9 5 (exits for loop since condition fails)
第二次结束时,

数组中的值通过循环:1,3,5,6,7

1 3 5 7 9

最终结果:f().

  

此外,您可以使用&#39;在线c编译器&#39;测试代码片段。

以下是JDoodle