解释了C中的for循环

解释了C中的for循环,c,loops,C,Loops,我在C中看到一个for循环,如下所示: for(i=myid;i

我在C中看到一个for循环,如下所示:

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