有人可以解释给定循环的行为吗?

时间:2015-03-26 20:22:06

标签: c for-loop

for (k=0; tmp[j+k]=next[k]; k++);

这个for循环什么时候结束?为什么?

当下一个[k] == 0或tmp [j + k] == 0时它会结束吗? 或者还有其他我缺少的东西?

抱歉,我的坏人。抱歉没有问题。

3 个答案:

答案 0 :(得分:3)

请注意,循环没有正文。这项工作是在最终测试中完成的。结束测试是隐式的,因为虽然它将next[k]的值分配给tmp[j+k],但表达式也保存该值,并且为0(false)或非0(真)。

因此,当0从一个数组复制到另一个数组时,循环结束。

答案 1 :(得分:0)

当表达式tmp[j+k]=next[k]的值计算为零时,它将结束。碰巧这个表达式的值也是它右边的值:next[k]的值。

答案 2 :(得分:0)

循环将继续,直到表达式tmp[j+] = next[k]的值计算为0。当next[k]评估为0时,就会发生这种情况。

如果您正在编写此代码,或者您负责维护此代码,请使其更具可读性。

使用以下内容:

int valueToStopAt = 0;
for (k=0; (tmp[j+k]=next[k]) != valueToStopAt ; k++);