for語句剖析

來源:互聯網
上載者:User

 在編寫程式中,通常都會用用到For迴圈,那麼到底For語句是如何執行的?

當然,有一定編程經驗的人都會知道,for語句是一個實現迴圈執行的程式塊,for結構一般大致如:

    for(運算式1;運算式2;運算式3)語句;

或者

    for(運算式1;運算式2;運算式3){

          語句塊;

}

其中,表達1一般是用於變數的初始化;運算式2主要是用於控制迴圈,如果運算式2的計算結果是true,則繼續執行迴圈體,否則結束迴圈;運算式3一般用於變數的自增運算;

例如,簡單的輸出1到10的。程式為:

for(int i=1; i<=10; i++)  printf("%d",i);

在上面的程式中,在執行for(int i=1; i<=10; i++) 括弧裡邊的運算式時,表達1、2、3到底執行了嗎?或者說執行情況怎麼樣?

下面看一個例子程式:

int x = 10; int y = 10; int i = 10;
 for(i=0;x>8;y=i++){
       printf("%d,%d,%d\n",x-- , i , y);
 }

執行結果為:

10,0,10

9,1,0

 顯然,第一行結果中可見,i ==0,已經執行;x>8已經執行,才輸出結果;但y==10,並沒有執行y=i++。第二行結果,才顯示出i==1,y==0。

 

其實從for(int i=1; i<=10; i++)  printf("%d",i);的運行結果中,輸出1,2,3,……,10;比如第一次迴圈時,輸出i==1,可見運算式3i++,根本還沒執行。

 

問題解因:

for迴圈語句的真正執行過程為:

1)先求解運算式1;

2)求解運算式2,若結果為真,則執行迴圈體的語句或語句塊,否則結束迴圈;

3)求解運算式3;

4)跳回到步驟2)步驟繼續執行;

5)迴圈結束,執行for語句之後的語句。

 

由上述,運算式3是在執行迴圈體語句或語句塊後,才得以執行的,這是為什麼例子程式不執行y=i++的原因。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.