pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

是否需要“do {...} while ()"?環形?

Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
本文介紹了是否需要“do {...} while ()"?環形?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

Bjarne Stroustrup(C++ 創造者)曾經說過他避免do/while"循環,并且更喜歡根據while"來編寫代碼.循環代替.[見下面的引用.]

Bjarne Stroustrup (C++ creator) once said that he avoids "do/while" loops, and prefers to write the code in terms of a "while" loop instead. [See quote below.]

自從聽到這個消息后,我發現這是真的.你怎么看?是否有一個do/while"的例子?比使用while"更清晰、更容易理解.取而代之?

Since hearing this, I have found this to be true. What are your thoughts? Is there an example where a "do/while" is much cleaner and easier to understand than if you used a "while" instead?

回應一些答案:是的,我理解do/while"和do/while"之間的技術差異.和同時".這是一個涉及循環的可讀性和結構化代碼的更深層次的問題.

In response to some of the answers: yes, I understand the technical difference between "do/while" and "while". This is a deeper question about readability and structuring code involving loops.

讓我換個方式問:假設你被禁止使用do/while"- 是否有一個現實的例子,這會讓你別無選擇,只能使用while"編寫不干凈的代碼?

Let me ask another way: suppose you were forbidden from using "do/while" - is there a realistic example where this would give you no choice but to write unclean code using "while"?

來自C++ 編程語言",6.3.3:

From "The C++ Programming Language", 6.3.3:

根據我的經驗,do-statement 是錯誤和混亂的根源.原因是它的主體總是在評估條件之前執行一次.然而,為了讓身體正常工作,即使第一次通過,也必須保持非常類似的情況.比我預想的更多的是,我發現無論是在程序第一次編寫和測試時,還是在其前面的代碼被修改之后,這種情況都不會像預期的那樣保持.我也更喜歡在我可以看到的地方"的條件.因此,我傾向于避免使用 do 語句. -Bjarne

In my experience, the do-statement is a source of errors and confusion. The reason is that its body is always executed once before the condition is evaluated. However, for the body to work correctly, something very much like the condition must hold even the first time through. More often than I would have guessed, I have found that condition not to hold as expected either when the program was first written and tested, or later after the code preceding it has been modified. I also prefer the condition "up front where I can see it." Consequently, I tend to avoid do-statements. -Bjarne

避免 do/while 循環是 C++ 核心指南中的建議 作為 ES.75,避免do 語句.

Avoiding the do/while loop is a recommendation included in the C++ Core Guidelines as ES.75, avoid do-statements.

推薦答案

是的,我同意 do while 循環可以重寫為 while 循環,但是我不同意總是使用 while 循環更好.do while 總是至少運行一次,這是一個非常有用的屬性(最典型的例子是輸入檢查(從鍵盤))

Yes I agree that do while loops can be rewritten to a while loop, however I disagree that always using a while loop is better. do while always get run at least once and that is a very useful property (most typical example being input checking (from keyboard))

#include <stdio.h>

int main() {
    char c;

    do {
        printf("enter a number");
        scanf("%c", &c);

    } while (c < '0' ||  c > '9'); 
}

這當然可以重寫為 while 循環,但這通常被視為更優雅的解決方案.

This can of course be rewritten to a while loop, but this is usually viewed as a much more elegant solution.

這篇關于是否需要“do {...} while ()"?環形?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
How to break out of a loop from inside a switch?(如何從交換機內部跳出循環?)
主站蜘蛛池模板: 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 锂电叉车,电动叉车_厂家-山东博峻智能科技有限公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 杭州荣奥家具有限公司-浙江办公家具,杭州办公家具厂 | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 菏泽知彼网络科技有限公司| 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 钢结构-钢结构厂房-钢结构工程[江苏海逵钢构厂] | 免费网站网址收录网_海企优网站推荐平台 | 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 【连江县榕彩涂料有限公司】官方网站 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 磷酸肌酸二钠盐,肌酐磷酰氯-沾化欣瑞康生物科技 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 管形母线,全绝缘铜管母线厂家-山东佰特电气科技有限公司 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 海南在线 海南一家| 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 金库门,金库房,金库门厂家,金库门价格-河北特旺柜业有限公司 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家| 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 布袋式除尘器|木工除尘器|螺旋输送机|斗式提升机|刮板输送机|除尘器配件-泊头市德佳环保设备 | 粉末包装机-给袋式包装机-全自动包装机-颗粒-液体-食品-酱腌菜包装机生产线【润立机械】 | 模具钢_高速钢_不锈钢-万利钢金属材料 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 |