以下循环之间的一般区别因素:
while (condition) {action}
do {action} while (condition)
是前者用于发生零次或更多次的循环,而后者用于发生一次或更多次的循环。
换句话说,while 的条件在循环开始时检查,do while 的条件在循环结束时检查。
您经常会看到开发人员似乎不知道关于do-while 的代码,因为他们会写:
result = doSomething();
while (result == NOT_FINISHED) {
result = doSomething();
}
最好写成:
do {
result = doSomething();
} while (result == NOT_FINISHED);
但是,在条件始终为true 的特定情况下,这并不重要。以下循环基本上是等价的(真实情况使用1):
for (;;) { doSomething(); }
for (;;doSomething());
while (1) { doSomething(); }
do { doSomething(); } while (1);
while (doSomething(),1);
BADPAX: doSomething(); goto BADPAX;
第一个for 循环可能是执行无限循环的规范方式,它利用了这样一个事实:如果您省略循环的继续条件,它会假定它始终为真。
第二个for 循环只是将循环体移动到for 语句的每次迭代部分。
第一个while 有时也会在野外看到,do-while 可能更少。这里唯一的区别是前者循环永远在循环顶部检查,后者循环永远在循环底部检查。
最后的 while 循环以一种你可能永远不应该使用的方式使用 C 逗号运算符:-)
最后一个现在非常罕见,但可能是他们都在机器代码级别优化到的。