【发布时间】:2014-10-22 20:40:36
【问题描述】:
大多数时候,当我们检查在 while 循环体中发生的事件时会使用 while 循环。当给出“确定的”迭代次数时,通常使用 for。让我们假设我们需要知道我们正在进行的迭代次数,一般来说:
一般的 While 循环:
bool flag = false;
int it = 0;
while (!flag)
{
//... do something using it
++it;
flag = getFlag();
}
通用For循环,迭代次数是循环固有的:
for(int it = 0; it < N; ++it)
{
//... do something using it
if (getFlag())
break;
}
但是,对于未设置迭代次数的情况(即,我们一直循环直到偶数发生)我从未见过类似的情况:
for(int it = 0; !getFlag(); ++it)
{
//...do something using it
}
但我总是看到类似于我编写的第一个 while 循环的内容。有什么真正的区别吗? while循环是否被认为是更好的样式?因为对我来说,for 循环更紧凑,更易于阅读和遵循。
【问题讨论】:
-
这是正确的,但对于只习惯于看到
for以标准“递增到某个限制”方式使用的人来说,这可能会让人感到惊讶。 -
@dlf "是正确的,但仅限于检查终止条件是在开始下一次迭代之前执行的最后一步的特定情况" -- 同时并且 for 循环在这种行为中是相同的,所以我不确定你的意思是什么。
-
for几乎被定义为在编译时转换为while循环。 -
@dlf 我也不明白这一点(如先前的评论所述)。我已经修复了添加
!的代码
标签: c++ for-loop while-loop