我在C中看到一个for循环:
for (i=myid; i < NUM_STEPS; i += nprocs)
让我们说吧
myid = 1;
NUM_STEPS = 5;
nprocs = 3;
。
现在我开始for循环,我想知道解释是否正确:
第一次迭代:i = 1 + 1 = 2
第二次迭代:i = 2 + 1 = 3
现在i
达到nprocs
的值,for循环结束。
答案 0 :(得分:2)
第一次迭代:
i = 1
第二次迭代:
i = 1 + 3 = 4
然后:
i = 4 + 3 = 7
大于5,因此不会执行循环。
答案 1 :(得分:2)
for (i=myid; i < NUM_STEPS; i += nprocs) {
// ...
}
装置
i = myid;
while(i < NUM_STEPS) {
// ...
i += nprocs;
}
在您的情况下,您有两次迭代:i = 1
和i = 4
。
答案 2 :(得分:1)
for (i=myid; i < NUM_STEPS; i += nprocs)
此处,第一次迭代i
为1
并检查条件
= i < NUM_STEPS
= 1 < 5
= true
然后执行循环体。完成第一次迭代后,控制转到for循环增量语句。
= i+=nprocs
= i = i + nprocs
= i = 1 + 3
= i = 4
现在我在第二次迭代中变为4,条件变为true
。
= i < NUM_STEPS
= 4 < 5
= true
然后执行循环体。完成第一次迭代后,控制转到for循环增量语句。
= i+=nprocs
= i = i + nprocs
= i = 4 + 3
= i = 7
现在我在第二次迭代中成为7
,条件变为false
。
= i < NUM_STEPS
= 7 < 5
= false