对于循环 [类似 C/java 的语法]
Posted
技术标签:
【中文标题】对于循环 [类似 C/java 的语法]【英文标题】:For cycle [C/java like syntax] 【发布时间】:2011-10-06 16:18:54 【问题描述】:所以我有一个简单的问题
考虑这两个循环,请 向我解释是否有任何区别 两种写法之间
方法一:
for(i=(max-1) ; i>=0 ; i--) do-some-stuff
方法二:
for(i=max ; i>0 ; i--) do-some-stuff
我问这个的原因是因为今天在学校 当我们看到一些 Java 函数时,有 这种回文方法将用作最大 传递给它的单词的长度和使用的方法 骑自行车穿过 for 是第一个,任何人都可以 澄清我为什么写那篇文章的人 优先使用该方法的代码?
【问题讨论】:
“for cycle”听起来很奇怪! @RafeKettler - 不正确,两者之间肯定存在差异。两种场景下i
的范围不同。
这取决于i
在do-some-stuff
中的使用位置,或者循环只是重复max
次的机制。
顺便说一句,我也见过for (i = max; --i >= 0; ) ...
。我会选择最适合您的团队/项目的结构并坚持下去。
两者都不如箭头运算符i = max; while(i --> 0)
,读作“当 i 归零时”。
【参考方案1】:
是的,有很大的不同 - 在版本中,范围是 [0, max-1]
。在第二个版本中,它是[1, max]
。例如,如果您尝试使用 max
元素访问从 0 开始的数组,则第二个版本会爆炸,而第一个不会。
如果循环运行的顺序无关紧要,我个人会使用更惯用的升序:
for (int i = 0; i < max; i++)
...但是当降序时,第一种形式给出的值范围与此相同,只是顺序相反。
【讨论】:
【参考方案2】:两个循环都将迭代max
次。但范围会有所不同:
max - 1
到 0
(包括两者)
第二个循环的范围是max
到1
。
因此,如果您使用 i
作为数组索引,或者做一些工作是 i
的函数,依赖于 i
,那么它会给终端值带来问题(例如 @987654329 @ 在第一个中被考虑,而在第二个中则不考虑)。但是如果你只是想迭代循环max
nos of times,并且做一些独立于i
的值的工作,那么没有区别。
【讨论】:
以上是关于对于循环 [类似 C/java 的语法]的主要内容,如果未能解决你的问题,请参考以下文章