do while比while好在那裡?為什麼要專門設計個do while?

時間 2021-06-02 07:10:32

1樓:pCBjR6

彙編會把while轉換為dowhile。

如果硬要用彙編寫while的形式(cmp條件判斷在前),dowhile比while效能更好。

2樓:萌新阿岩

do-while 語句與 while、for 語句乙個最大的區別便是,do-while 語句會先執行一次迴圈體。利用這個特點,可以在某些方面發揮重要作用,常見的便是用於巨集定義函式的編寫中。有興趣可以閱讀下面我的這篇文章:

萌新阿岩:C/C++ 語言巨集定義函式編寫時 do-while 的妙用和一些注意事項

3樓:勝勳

while偏向於「有初始化的變數」時,比如int notover = 1;

while( notover ){};

do while偏向於「需要實時判定」時,比如dowhile( t<10 );嘿嘿

4樓:

迴圈指令/語法的發展歷史是這樣的:

機器語言/組合語言時期:jmp/loop 指令

C語言時期:goto/for/while/do-while 語句

高階語言時期:foreach 語法出現了

模板框架時代:

研發框架的工程師仍然要寫迴圈。

使用框架的程式設計師連迴圈也不必寫了,直接 URI 繫結對映模板就完成了開發工作。連出錯的機會都沒有,死迴圈聽都沒聽說過。

所以很多培訓班出來的速成程式設計師,他們在工作中連迴圈都很少寫,更不用說do-while了。

題主你看看這個發展歷史和崗位分工,就明白:

do-while 不是好不好用的問題,是屁股決定腦袋的現狀。

如果我屁股坐在軟體工程師的位置上,迴圈的寫法,如何優化都要考慮。

如果我屁股坐在使用人家的框架位置上,能不用迴圈就不用,減少出錯(迴圈判斷/邊界上)的可能 ,按時完成工作。以上~

5樓:冒泡

一開始應該只是為了那種「先做迴圈體再判斷是否退出」的需求產生的,這種需求其實還是有一些的,例如:從乙個檔案read所有資料到記憶體,每次read並不一定能讀到所有資料:

Buffer buf;

do while (!file.eof());

簡單起見這裡用了偽碼,實際應該會多一些細節,不過大致意思就是這樣,並不是C獨有,所有語言都可能碰到這個情況

不過後來do while在C中被用在了另外的乙個地方:

#define F(x) do while (0)至於這裡為啥一定用do while(0),而不是其他方式,可以看下相關的資料

LaTex 比 Word 好在哪?

好在,一旦你固定了你寫文章的樣式,你不需要被各種格式問題困擾,專注於寫作的內容就可以了。就像我,寫PRD一直使用LaTeX,所以寫出來的文件幾乎都是一模一樣的,所以在規範性和可讀性上就很強了。當然,其它同事要修改就比較麻煩了,畢竟生成的PDF檔案上修改幾乎不可能。有段時間,我甚至用beamer做演示...

Mac比別的電腦好在哪

18年的時候買的MacBook Pro 17年,就在昨天打著lol大亂鬥的時候,我插著電源,系統連續提示我兩次電量不足,之後關機,我重啟之後又提示我沒電,又關機,第四次開機之後正常了,顯示我有百分之96的電量, Mac的價位是中高階產品,一分錢一分貨。而且蘋果是傳統做硬體的公司,一代產品都用乙個設計...

自動注入到底比new好在哪?

微笑的土魚 你是你們公司搞後勤的,負責所有部門的下午茶。你現在有一台咖啡機,可以製作咖啡和奶茶 假設乙個部門50人,向你申報50杯奶茶,你用咖啡機一杯一杯地製作 new 做完正準備給他們送過去,接到他們的通知,一部分人不想喝奶茶了,想要喝咖啡,得嘞,得倒掉一部分奶茶騰出杯子再製作咖啡。你累嗎?你還有...