我看到一个for循环用C这样的:for循环使用C解释
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循环结束。
我看到一个for循环用C这样的:for循环使用C解释
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循环结束。
第一次迭代:
i = 1
第二次迭代:
i = 1 + 3 = 4
然后:
i = 4 + 3 = 7
其大于5,因此,循环将不被执行。
for (i=myid; i < NUM_STEPS; i += nprocs) {
// ...
}
意味着
i = myid;
while(i < NUM_STEPS) {
// ...
i += nprocs;
}
你的情况,你有两个迭代:i = 1
和i = 4
。
for (i=myid; i < NUM_STEPS; i += nprocs)
在此,第一次迭代i
是1
并检查条件
= i < NUM_STEPS
= 1 < 5
= true
然后循环体执行。完成第一次迭代后,控制转到循环增量语句。
= i+=nprocs
= i = i + nprocs
= i = 1 + 3
= i = 4
现在我成为4在第二次迭代和条件变得true
。
= i < NUM_STEPS
= 4 < 5
= true
然后执行循环体。完成第一次迭代后,控制转到循环增量语句。
= i+=nprocs
= i = i + nprocs
= i = 4 + 3
= i = 7
现在我成为成为false
秒迭代和条件7
。
= i < NUM_STEPS
= 7 < 5
= false
不,第一次迭代'i = 1'。它在循环的初始化子句中这样说。 – StoryTeller
不,你错了。它随'nprocs'的值递增,当它大于或等于'NUM_STEPS'时停止。 –
@cᴏʟᴅsᴘᴇᴇᴅ所以第一次迭代是1 + 3 = 4,然后停止? – kyle