C 有人能解释给定循环的行为吗?
这个for循环什么时候结束?为什么 它将在next[k]==0时结束,还是在tmp[j+k]==0时结束? 还是我还遗漏了什么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]的值计算为零时,循环结束。这个表达式的值恰好也是其右侧的
对不起,我的英语不好。对不起,我的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++);