[英]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] + 2
与1 + 2
或3
array[index]
,我们知道它代表array[1]
,它曾经保存3
的值,现在分配给(再次)保存值3
。第一次循环结束时数组中的值:1,3,4,6,7
现在,回到循环的顶部.. index
被告知将自身增加1
即: index
为 1 ,现在表示数字2
index-1
将保存值2-1
或1
。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.