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

时间:2011-05-03 09:57:26

标签: c++ for-loop if-statement return termination

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

for(;;)

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

要终止程序,我有“if”语句检查用户输入值是否为零,如果值为零,则程序终止使用“返回0;”参数。

如果将值分配给变量后,程序会检查每个用户输入值是否为零。


所以对于真正的问题:这是使我的程序按照我描述的方式进行的正确方法吗?或者有更多/更好/可接受的编程方式吗?

其次使用“返回0”参数与我在此程序中的方式有​​什么不妥?

如果你认为我很难理解我写的或意思是什么请回复,我会花更多的时间来写一切。

9 个答案:

答案 0 :(得分:5)

你正在做的事情非常好,是一种写作和退出无限循环的惯用方式。

答案 1 :(得分:4)

我总是使用while(true)进行无限循环

答案 2 :(得分:2)

这是有效的,您可以继续使用您的代码。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

是的,这完全可以接受。一旦循环中有退出条件(breakreturn),就可以在循环语句中使循环“无限” - 只需将退出条件从循环语句移动到循环体中即可。如果这使程序更具可读性,你当然可以做到。

答案 5 :(得分:1)

我在几个地方见过这个:

#define forever for(;;)

forever {

}

不确定我会推荐它。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

您还可以使用带有条件的while循环来重复请求用户输入。

while (condition) {
  ...
}

您可以使用。

代替IF阻止验证

答案 8 :(得分:0)

您所描述的内容可以正常使用,但值得一提的是,某些严格的编码标准(即MISRA)会拒绝在函数结束前使用return

如果您的代码符合此类标准,那么您可以使用do-while循环并使用合适的退出条件:

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