【问题标题】:Example of a while loop that cannot be replaced by a for loop不能被 for 循环替换的 while 循环示例
【发布时间】:2011-03-26 03:30:18
【问题描述】:

这个问题基本上类似于Example of a While Loop that can't be a For Loop 此处发布的问题,除了没有一个这样的例子,使用 while 循环的某个程序由于其局限性而不能被 for 循环替换。

一个例子是

i=0;
while(i<10)
{
    continue;
    i=i+2;
}

and

for(i=0;i<10;i++)
{
    continue;
    i++;
}

在 for 循环中 continue 不会停止递增。我想看看不一样的东西。

【问题讨论】:

标签: c for-loop while-loop


【解决方案1】:

没有这种情况。

尤其是任何

while( condition )

可以替换为

for(; condition ;)

实现相同的行为。

【讨论】:

  • 我知道正常情况下是可以实现的。但是在解决特定问题时必须有特定的实现,即指令序列在 for 循环中不会具有相同的行为。
  • @SkinD,我相信上面写的东西会编译成相同的本机代码——关键是这些语句是真正等价的,不会产生不同的指令。
  • 看上面的编辑。我在这里想要的答案是非常愚蠢的。我知道 while 循环和 for 循环可以具有相同的行为。我基本上想要更多像我上面展示的例子。
  • @SkinD,你的例子不是真的有效。我可以创建一个以一百种不同方式执行不同操作的循环,但这不是您所要求的(“不能用for 循环替换”)。根据此答案,您的 while 正确 for 循环是:i=0; for(;i&lt;10;) { continue; i=i+2; }
  • @SkinD:那么这是一个完全无趣的问题——它相当于问题“两个不一样的while()循环有哪些例子?” ,这应该是不言而喻的荒谬。
【解决方案2】:

显然不存在这样的,因为任何while()形式的循环:

while (expression) { }

可以替换为

for (;expression;) { }

do { } while () 循环也是如此。

【讨论】:

  • +1 正确,唯一的区别是我相信的意图和语义。
猜你喜欢
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 2018-07-24
  • 2017-04-29
相关资源
最近更新 更多