C++ 中循环的 while 和 do while 之间的区别

difference between while and do while loop in C++

本文关键字:while 之间 区别 do C++ 循环      更新时间:2023-10-16

谁能告诉我 while 循环和 do while 循环之间的基本区别(在效率方面(c++?我试图通过网络搜索它,但找不到确切的答案。

在效率方面没有区别。两者都相当于条件评估和条件跳转。

如果优化器不插入冗余代码,则顶部检查循环会变慢,因为需要额外的跳转。 如果优化程序确实插入了冗余代码,则由于冗余代码本身及其对缓存的影响,顶部检查的循环将稍微慢一些。

如果正确的行为是主体至少执行一次,则顶部检查循环的效率较低(超过额外执行一次条件的成本(。 但这通常仍然不是根据效率选择底部检查的理由。 选择使人类维护者更容易理解代码的那个。

程序员习惯于查看while循环(顶级检查循环(,其中条件在第一次传递时(从人类的角度来看(是微不足道的。 循环仍然更具可读性。 如果第一次传递是如此微不足道,以至于连编译器都看到了它(发生的频率比你想象的要少(,那么实际上没有效率差异。

通常,要测试的条件甚至无法计算,直到通过循环一次。 然后我发现底部检查循环更具可读性。 对条件进行虚拟输入以顶级检查某些微不足道的真实情况的常见做法只是分散注意力。

do while 循环可确保循环的主体至少执行一次。

这取决于你需要使用它多少,我看到了这个很好的例子,当你需要使用do while循环时

也许您已经编写了一个运行动画的图形程序。当游戏结束时,您需要向玩家展示记分牌。当然,您至少需要运行一次动画循环才能呈现记分板。所以:在循环中运行动画,并在最后执行条件操作,看看是否应该停止动画,因为游戏已经结束。