如何在没有if-else的情况下无限循环或循环到一个限制

riq*_*ang 1 c++ loops

我想知道是否有一种方法可以编写一个接受一个输入的函数,循环次数的最大计数,如果数字是负数则会执行无限循环,而不使用if-else

void func(int nAttempts) // if nAttempts <= 0, do an infinite loop
{
  if ( nAttempts <= 0 )
  { // do an infinite loop
  }
  else
  { // do a loop up to nAttemtps
  }
}
Run Code Online (Sandbox Code Playgroud)

如果没有if-else,我想知道是否有办法做到这一点

mah*_*mah 9

while ((nAttempts < 0) || (nAttempts-- > 0)) {...}

但为什么?这使得您的代码可读性降低,其中if/ else非常清楚您的意图是什么.


jro*_*rok 5

我认为这是一个棘手的问题?这是我的看法:

void f(int n)
{
    n < 0 ? []{ while(true); }() : [&]{ while(n--); }() ;  
}
Run Code Online (Sandbox Code Playgroud)