如何避免'while(true)'与'break'而不是使用'for'循环?

时间:2016-10-21 13:00:32

标签: c loops if-statement while-loop conditional-statements

我有一个配置文件的应用程序,从中读取各种设置。其中一个设置是应用程序正在运行的周期。 如果此变量nLoops-1,那么它应该运行无限次。否则它将运行x次。 目前这就是我实施它的方式。但是我想知道如果没有while(true)表达式会有更直接的方式(我在这里得到警告):

//get nLoops from config file

int i = 0;
while (true)
{
    if (nLoops > -1 && i >= nLoops)
        break;
    i++;

   // do stuff
}

3 个答案:

答案 0 :(得分:3)

只需在if条件中设置while条件(倒置,因为您正在测试以保持而不是突破):

while (nLoops == -1 || i < nLoops)

for

for (i=0; (nLoops == -1) || (i < nLoops); i++)

答案 1 :(得分:2)

您可以将while(true)替换为for(;;)以避免出现警告。具有缺失控制表达式的for循环在标准中明确定义,例如ISO / IEC 9899:1999 6.8.5.3/2。

答案 2 :(得分:0)

这需要一个(布尔)变量,但避免在循环中使用break语句。

    // Here reads from configuration file

    bool isInfiniteLoop = false;
    i = 0;

    if(nLoops == -1)
    {
       isInfiniteLoop = true;
       nLoops = 1;
    }

    while(i < nLoops)
    {
         // here goes your code

         if(!isInfiniteLoop)
         {
            // If NOT infinite loop: increment counter, otherwise while condition will always be 0 < 1
            i++;
         }
    }