对于循环 [类似 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的范围不同。 这取决于ido-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 - 10(包括两者) 第二个循环的范围是max1

因此,如果您使用 i 作为数组索引,或者做一些工作是 i 的函数,依赖于 i,那么它会给终端值带来问题(例如 @987654329 @ 在第一个中被考虑,而在第二个中则不考虑)。但是如果你只是想迭代循环max nos of times,并且做一些独立于i的值的工作,那么没有区别。

【讨论】:

以上是关于对于循环 [类似 C/java 的语法]的主要内容,如果未能解决你的问题,请参考以下文章

2021年大数据常用语言Scala:基础语法学习 循环

IT兄弟连 Java语法教程 流程控制语句 控制循环结构2

bash数组语法和循环,请解释[重复]

使用嵌套循环在控制台上输出九九乘法表

具有逻辑或语法问题的 for 循环

哪个是更好的做法 - 对于带有中断或条件循环的循环?