【问题标题】:A program with for loop带有for循环的程序
【发布时间】:2014-10-09 01:18:01
【问题描述】:

当我想到这段代码时,我正在编写一个for 循环程序。

for(int i=1; i<=10; i++,i++)

程序运行良好,输出也正确。但后来我尝试了以下代码:

for(int i=1; i<=10; ++i,++i)

for(int i=1; i<=10; ++i,i++)

for(int i=1; i<=10; i++,++i)

令我惊讶的是,它们都产生相同的输出,1 3 5 7 9。现在我的问题是,for 循环究竟是如何工作的,为什么当我使用预增量时所有代码都产生相同的输出并在同一 for 循环中进行后增量?

【问题讨论】:

  • 提示:如果你不使用前/后自增表达式的,你认为有什么区别?
  • i++, ++i 将“最终”将 i 加一。在这种情况下, i 的整体结果很重要,因此它不会产生影响
  • 其实你应该写 i += 2 而不是 i++、i++ 或其他变体。
  • 我很抱歉。我忘了提到我在循环中打印了 i 的值。

标签: java for-loop post-increment pre-increment


【解决方案1】:

相当于

int i = 1;
while(i <= 10)
{
   //stuff would happen here but these loops are all empty
   i++;
   i++;
}

int i = 1;
while(i <= 10)
{
   //stuff would happen here but these loops are all empty
   ++i;
   ++i;
}

int i = 1;
while(i <= 10)
{
   //stuff would happen here but these loops are all empty
   ++i;
   i++;
}

int i = 1;
while(i <= 10)
{
   //stuff would happen here but these loops are all empty
   i++;
   ++i;
}

在这种情况下,无论是前增量还是后增量,都无关紧要。它只是将i 的值增加1

【讨论】:

  • 在i++中,先使用值再增加,而在++i中,先增加值再使用。那样的话,带 ++i 和 i++ 的代码不应该导致不同的结果吗?
  • 您执行了语句,但没有将结果用于其他任何事情。只有在 list.remove(i--);array[++i] = element; 这样的情况下使用它时才会出现这种差异。
  • 但是仅仅调用 i++;++i; 并没有真正做很多事情,除了几乎等于 i += 1;i = i + 1; 的预期效果。
  • 好的。我现在明白了。非常感谢。
【解决方案2】:

使用由逗号分隔的多个元素仅(可能)在执行顺序很重要的情况下存在问题。

如果您不使用后/前增量的结果,而唯一重要的是增量本身,那么显然最终结果将是相同的 - 加 2。

【讨论】:

  • 感谢您的帮助。明白答案了。
【解决方案3】:

i++ 表示使用然后随副本递增,并在该行稍后发生递增

++i 表示增量和使用无需复制和增量立即发生。

这就是这里的尊重。

【讨论】:

  • @ Ruchira Gayan - 我知道 i++ 和 ++i 之间的区别。但我的问题是,尽管它们的功能略有不同,为什么它们会产生相同的输出?
  • @Codin'Genius 那么你就有答案了。
  • 感谢您的帮助。我了解工作方法。
猜你喜欢
  • 2013-10-08
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 2021-09-12
  • 2019-08-19
  • 2013-08-22
  • 1970-01-01
相关资源
最近更新 更多