我有一个配置文件的应用程序,从中读取各种设置。其中一个设置是应用程序正在运行的周期。
如果此变量nLoops
为-1
,那么它应该运行无限次。否则它将运行x
次。
目前这就是我实施它的方式。但是我想知道如果没有while(true)
表达式会有更直接的方式(我在这里得到警告):
//get nLoops from config file
int i = 0;
while (true)
{
if (nLoops > -1 && i >= nLoops)
break;
i++;
// do stuff
}
答案 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++;
}
}