使用空的for循环有什么问题吗?

Is there anything wrong with using an empty for loop?

本文关键字:什么 问题 循环 for      更新时间:2023-10-16

自从我上次编程以来已经有一段时间了,我似乎已经忘记了使用空的"for循环"来创建无限循环是否可以接受?

for(;;)

目前我在一个程序中使用这个方法,使它反复要求用户输入两个数值,每个数值对应程序中的双变量。然后程序调用一个函数并计算这两对数字的和。

为了终止程序,我有"if"语句来检查用户输入的值是否为零,如果值为零,则使用"Return 0;"参数终止程序。

程序检查每个用户输入的值是否在赋值给变量后直接为零。


那么真正的问题是:这是一个正确的方法,使我的程序做我所描述的?或者是否有一个更/更好/被接受的编程方式?

其次,我在这个程序中使用"返回0"参数有什么问题吗?

如果你认为我写的内容或意思很难理解,请回复,我会花更多的时间来写。

您所做的非常好,这是编写和退出无限循环的惯用方法。

对于无限循环,我总是使用while(true)

我在一些地方看到过这种情况:

#define forever for(;;)
forever {
}

我不确定我会推荐它

for(;;)while(1)都可以接受。这些只是语言提供的条件循环,你可以根据需要使用它们来创建一个无限循环。

这是有效的,你可以继续你的代码

是的,完全可以接受。一旦在循环中有了退出条件(breakreturn),就可以在循环语句中将循环设置为"无限"—只需将退出条件从循环语句移到循环体中。如果这样可以让程序更容易读,你当然可以这么做。

对于无限循环,for (;;)是相当常见的做法。但是如果你有一个条件,比如一个非零的用户输入,你总是可以在while循环中完成这个检查。

您还可以使用while循环与条件重复请求用户输入。

while (condition) {
  ...
}

可以使用。

来代替IF块来验证。

你所描述的将工作得很好,但值得一提的是,某些严格的编码标准(即MISRA)将不赞成在函数结束前使用return

如果你的代码符合这样的标准,那么你可以使用do-while循环和合适的退出条件:

do {
   // get userinput
   if (userinput != '0')
   {
       // do stuff 
   }
} while (userinput != '0');