for 和 while的區別

來源:互聯網
上載者:User
下列關於for迴圈和while迴圈的說法中哪個是正確的?( )  
A.while迴圈能實現的操作,for迴圈也都能實現    
B.while迴圈判斷條件一般是程式結果,for迴圈判斷條件一般是非程式結果    
C.兩種迴圈任何時候都可替換    
D.兩種迴圈結構中都必須有迴圈體,迴圈體不可為空

 

我的理解是:
當知道執行次數的時候一般用for
當條件迴圈時一般用while
例如:
for i=0,i<n,i++
{}
這裡n是已知數,可以迴圈n次

while i<n
{}
不知道要迴圈多少次,但當i>=n的時候停止迴圈

do while迴圈總會執行一次,for不一定,

一般來說,for對於初學使用的要多於while,但其實while的功能要大於for,以後你慢慢會體會到的,所有的for迴圈都可以用while來表示,但就不是所有的while迴圈都可以用for迴圈來表示!

while的用途有時候比for要巧
因為while有do...while這個變體,無條件執行一次迴圈體後再判斷是否達到或超過迴圈終止條件
但是具體用什麼還是看個人程式設計風格了
舉些例子:
如果是非常有規律的迴圈,比如簡單窮舉那麼我們用for
如果用於處理複雜的迴圈,不適用單迴圈變數穩定遞增進行的迴圈,那麼一般我們用while

其實也可以這樣說,for迴圈都是用來表示那些顯而易見的迴圈結構,就是使用它表示很容易就可以看出迴圈的頭和尾,所以對於初學的程式來說這樣。而while是用來表示一些相對複雜一點的迴圈結構,一般的while都不太容易看出迴圈的頭和尾,有很多複雜的迴圈並不能用for迴圈來表示時,就只能用while迴圈來表示了。

for迴圈通常用在迴圈次數確定的時候,而while迴圈用在次數不確定時
比如下面這個計算字元的函數就不能用for:

int strcount( char *sz )
{
 int count = 0;
  while ( *(sz++) )
    count++;
 return count;
}

無明顯區別
如果知道明顯的地區界限,一般用for

如果不知道界限,但可以判斷條件是真與否,一般用while 如
while(XXX.next())
{
}
這個時候並不知道這個對象有好多,但可以返回是true,還是false

1. 兩種迴圈在構造死迴圈時的區別
用while構造死迴圈時,一般會使用while(TRUE)來構造死迴圈;而用for來構造死迴圈時,則使用for(;;)來構造死迴圈。這兩個死迴圈的區別是:while迴圈裡的條件被看成運算式,因此,當用while構造死迴圈時,裡面的TRUE實際上被看成永遠為真的運算式,這種情況容易產生混淆,有些工具軟體如PC-Lint就會認為出錯了,因此構造死迴圈時,最好使用for(;;)來進行。
2. 兩種迴圈在普通迴圈時的區別
對一個數組進行迴圈時,一般來說,如果每輪迴圈都是在迴圈處理完後才講迴圈變數增加的話,使用for迴圈比較方便;如果迴圈處理的過程中就要將迴圈變數增加時,則使用while迴圈比較方便;還有在使用for迴圈語句時,如果裡面的迴圈條件很長,可以考慮用while迴圈進行替代,使代碼的排版格式好看一些。

 

對於需要無條件進行迴圈的語句,優先採用for語句.

;而在進行變數迴圈時,for語句在初始設定變數後有一條跳轉操作,而while沒有,這個應該跟vc編譯器有關

;可以說應該在效率上沒有多大差別,需要進一步進行大資料量操作

;同時,我對於各種語句操作的順序是否有時間關聯不是很清楚.

2. 大批量資料操作實驗 -- 自加1000w次,然後再自減1000w次,看執行時間

實踐發現對於千萬級資料量,執行時間並沒有差異

 

總結:

   主要考慮程式的可讀性和美觀,對於效率問題,可以不用考慮差異性.

   所以我比較推崇,在迴圈次數確定時,用for,不確定時,用while~~

 

這是在網上摘錄的一些關於for和while的區別,大家可以發表一下自己的看法,最好是有依據的。(歡迎大家討論)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.