我遇到了这段代码
var i=Array.ConvertAll(Console.ReadLine().Split(),int.Parse);
for(int x=i[0]-i[2],y=i[1]-i[3];;Console.WriteLine((0!=y?0<y--?"S":"N":"")+(0!=x?0<x--?"E":"W":"")));
我想我理解int x=i[0]-i[2],y=i[1]-i[3]
,但让我困惑的部分是没有结束条件。所以我的问题是,这个循环是如何终止的?
我看到这个答案谈到无休止的循环。
答案 0 :(得分:4)
在编程语言中,除非接收到某些外部条件(例如,异常或用户信号),否则有些循环被写入以永久运行。有时,这种“无限”循环是错误写入的。
问题中的循环似乎只是一个无限循环的情况,可能是故意写的。
答案 1 :(得分:0)
循环
for(int x=i[0]-i[2],y=i[1]-i[3];;Console.WriteLine((0!=y?0<y--?"S":"N":"")+(0!=x?0<x--?"E":"W":"")));
问题永远不会结束。您可以通过在其后添加Console.WriteLine("Loop finished, yet.")
之类的内容来检查。永远不会达到那条线。
你看到循环无论如何结束,可能有以下原因之一:
int x=i[0]-i[2],y=i[1]-i[3]
访问它将导致异常。然后循环将不会执行。 然而,循环是无限的。如果它被中止,其原因绝对不在那个循环中,只在外面。
在我看来,for循环的迭代部分仅用于更改循环变量。一个人发明了循环的身体部分,用于其他东西,如屏幕输出或其他东西。因此,上面的循环是错误的代码。