for (k=0; tmp[j+k]=next[k]; k++);
这个for循环什么时候结束?为什么?
当下一个[k] == 0或tmp [j + k] == 0时它会结束吗? 或者还有其他我缺少的东西?
抱歉,我的坏人。抱歉没有问题。答案 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++);