繁体   English   中英

c中手工执行,不明白index -1是什么意思

[英]Hand execution in c, don't understand what index -1 means

我有这段代码,我正在尝试从中手动执行,但我不确定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,3,4,6,7

index 的值设置在 for 循环每次迭代的顶部。
所以第一次通过循环时, index被设置为表示值1

  • 所以index-1将保存值1-1 ,或0
  • 所以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为 1 ,现在表示数字2

  • 所以index-1将保存值2-11
  • 所以array[index - 1]array[1]相同,
  • array[1]保存值3
  • 所以array[index - 1] + 2,相当于3 + 2 ,或者5
  • 那么,我们分配array[index] ,我们知道它代表元素array[2]它曾经保存4的值) ,现在分配给保存值5

第二次循环结束时数组中的值:1,3,5,6,7

等等。

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 7 9

此外,您可以使用“在线 c 编译器”来测试代码片段。

这是一个: JDoodle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM