C++ 中循环的 while 和 do while 之间的区别
difference between while and do while loop in C++
谁能告诉我 while 循环和 do while 循环之间的基本区别(在效率方面(c++
?我试图通过网络搜索它,但找不到确切的答案。
在效率方面没有区别。两者都相当于条件评估和条件跳转。
如果优化器不插入冗余代码,则顶部检查循环会变慢,因为需要额外的跳转。 如果优化程序确实插入了冗余代码,则由于冗余代码本身及其对缓存的影响,顶部检查的循环将稍微慢一些。
如果正确的行为是主体至少执行一次,则顶部检查循环的效率较低(超过额外执行一次条件的成本(。 但这通常仍然不是根据效率选择底部检查的理由。 选择使人类维护者更容易理解代码的那个。
程序员习惯于查看while
循环(顶级检查循环(,其中条件在第一次传递时(从人类的角度来看(是微不足道的。 循环仍然更具可读性。 如果第一次传递是如此微不足道,以至于连编译器都看到了它(发生的频率比你想象的要少(,那么实际上没有效率差异。
通常,要测试的条件甚至无法计算,直到通过循环一次。 然后我发现底部检查循环更具可读性。 对条件进行虚拟输入以顶级检查某些微不足道的真实情况的常见做法只是分散注意力。
do while 循环可确保循环的主体至少执行一次。
这取决于你需要使用它多少,我看到了这个很好的例子,当你需要使用do while循环时
也许您已经编写了一个运行动画的图形程序。当游戏结束时,您需要向玩家展示记分牌。当然,您至少需要运行一次动画循环才能呈现记分板。所以:在循环中运行动画,并在最后执行条件操作,看看是否应该停止动画,因为游戏已经结束。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 在cuda线程之间共享大量常量数据
- while循环中while循环的时间复杂度是多少
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 为什么 for 循环和 while 循环之间的 continue 不同?
- matlab 和 c++ 中的 while 循环之间的区别
- C++ 中循环的 while 和 do while 之间的区别
- 10-200之间的素数只使用while循环C++
- while(n-)和while(n=n-1)之间的区别是什么
- 有没有一种方法可以在没有while循环的情况下在计算机之间传输数据?c++