Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 有人能解释给定循环的行为吗?_C_For Loop - Fatal编程技术网

C 有人能解释给定循环的行为吗?

C 有人能解释给定循环的行为吗?,c,for-loop,C,For Loop,这个for循环什么时候结束?为什么 它将在next[k]==0时结束,还是在tmp[j+k]==0时结束? 还是我还遗漏了什么 对不起,我的英语不好。对不起,我的noob问题。请注意,循环没有主体。工作在最后的测试中完成。结束测试是隐式的,因为尽管它将next[k]的值赋给tmp[j+k],但表达式也保存该值,并且为0(false)或非0(true) 因此,当0从一个数组复制到另一个数组时,循环结束。当表达式tmp[j+k]=next[k]的值计算为零时,循环结束。这个表达式的值恰好也是其右侧的

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

它将在next[k]==0时结束,还是在tmp[j+k]==0时结束? 还是我还遗漏了什么


对不起,我的英语不好。对不起,我的noob问题。

请注意,循环没有主体。工作在最后的测试中完成。结束测试是隐式的,因为尽管它将
next[k]
的值赋给
tmp[j+k]
,但表达式也保存该值,并且为0(false)或非0(true)


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

当表达式
tmp[j+k]=next[k]
的值计算为零时,循环结束。这个表达式的值恰好也是其右侧的值:
next[k]
的值将继续循环,直到表达式
tmp[j+]=next[k]
的值计算为
0
。当
next[k]
的计算结果为
0
时,就会发生这种情况

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

使用以下内容:

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

如果条件是赋值,则当
next[k]
计算为0时,它将结束;我不确定这是否会结束。是的,有人被称为调试器:使用
gcc-Wall-g
编译并使用
gdb
逐步运行您的程序。谢谢您,先生,很抱歉浪费您的时间,这是给我的学校的,我还不知道如何在代码块中使用调试器。我还不喜欢,因为我缺乏声誉,但你是第一个回答的,我接受了。再次感谢。“我还不知道如何在代码块中使用调试器。”-按下F7Facebook正在感染我们的社区。op真的只是用“喜欢”来代替投票吗?
int valueToStopAt = 0;
for (k=0; (tmp[j+k]=next[k]) != valueToStopAt ; k++);