解释了C中的for循环
我在C中看到一个for循环,如下所示:解释了C中的for循环,c,loops,C,Loops,我在C中看到一个for循环,如下所示: for(i=myid;i
for(i=myid;i
比方说
myid=1代码>
NUM_步数=5代码>
nprocs=3代码>。
现在我启动for循环,我想知道这个解释是否正确:
第一次迭代:i=1+1=2
第二次迭代:i=2+1=3
现在,由于i
点击nprocs
的值,for循环结束。第一次迭代:
i = 1
i = 1 + 3 = 4
第二次迭代:
i = 1
i = 1 + 3 = 4
然后:
大于5,因此将不执行循环。for(i=myid;ifor (i=myid; i < NUM_STEPS; i += nprocs) {
// ...
}
// ...
}
意味着
i=myid;
while(i
在本例中,您有两个迭代:i=1
和i=4
for (i=myid; i < NUM_STEPS; i += nprocs)
然后对循环体执行。完成第一次迭代后,控制转到for循环增量语句
= i+=nprocs
= i = i + nprocs
= i = 1 + 3
= i = 4
= i+=nprocs
= i = i + nprocs
= i = 4 + 3
= i = 7
现在我在第二次迭代中变成4,条件变成true
= i < NUM_STEPS
= 4 < 5
= true
现在我在第二次迭代中变成7
,条件变成false
= i < NUM_STEPS
= 7 < 5
= false
=i
否,第一次迭代i=1
。它在循环的初始化子句中这样说。不,你搞错了。它以nprocs
的值递增,并在大于或等于NUM_STEPS
@c时停止ᴏʟᴅsᴘᴇᴇᴅ 那么第一次迭代是1+3=4,然后停止?@kyle在每次迭代开始时检查条件。第1次迭代:1<5;第二次迭代:4<5;第三次迭代:7<5为假,所以停止。@cᴏʟᴅsᴘᴇᴇᴅ 好的,谢谢。
= i < NUM_STEPS
= 7 < 5
= false