我有一个函数func
,它返回true
或false
。在func
返回false
之前,我想继续调用它。这样做最不方便的方法是什么?
do {
// do nothing
} while (func());
或..
while (func());
或..
while (func())
if (!func())
break;
所有这些看起来都很尴尬,对我不直观。还有另一个解决方案吗?
答案 0 :(得分:8)
我认为选项B是最常用的,但你应该更明显地说你有一个空的循环体:
while (func())
; // do nothing
或
while (func()) { /* do nothing */ }
作为旁注,这个看起来就像某种忙碌的等待。如果是这种情况,通常可以通过使用OS提供的同步原语来避免它。
答案 1 :(得分:8)
我曾经写过
while (func()) continue;
当我需要一个完整的忙等待循环时(不常见)。关键字使得很难错过意图,并且它被编译掉了。 :)
答案 2 :(得分:1)
选项B的变体:
while (func())
{
// no-op
}
答案 3 :(得分:0)
第三个做了不同的事情 - 每次迭代都会调用func
两次。
我猜你想要第二个,这对其他人来说并不是很困惑。