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?(如何從交換機內部跳出循環?)
主站蜘蛛池模板: 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 电动高压冲洗车_价格-江苏速利达机车有限公司 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 消防设施操作员考试报名时间,报名入口,报考条件 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 盐水蒸发器,水洗盐设备,冷凝结晶切片机,转鼓切片机,絮凝剂加药系统-无锡瑞司恩机械有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 衬塑管道_衬四氟管道厂家-淄博恒固化工设备有限公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 高铝轻质保温砖_刚玉莫来石砖厂家_轻质耐火砖价格 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 光环国际-新三板公司_股票代码:838504 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 焊缝跟踪系统_激光位移传感器_激光焊缝跟踪传感器-创想智控 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 「钾冰晶石」氟铝酸钾_冰晶石_氟铝酸钠「价格用途」-亚铝氟化物厂家 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 高博医疗集团上海阿特蒙医院 |