1. 程式人生 > >for迴圈和while迴圈的區別

for迴圈和while迴圈的區別


當知道執行次數的時候一般用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~~