c++ For循環(huán)執(zhí)行順序流程圖解
for 循環(huán)允許您編寫一個執(zhí)行特定次數(shù)的循環(huán)的重復(fù)控制結(jié)構(gòu)。
語法
C++ 中 for 循環(huán)的語法:
for ( init; condition; increment ) { statement(s); }
下面是 for 循環(huán)的控制流:
- init 會首先被執(zhí)行,且只會執(zhí)行一次。這一步允許您聲明并初始化任何循環(huán)控制變量。您也可以不在這里寫任何語句,只要有一個分號出現(xiàn)即可。
- 接下來,會判斷 condition。如果為真,則執(zhí)行循環(huán)主體。如果為假,則不執(zhí)行循環(huán)主體,且控制流會跳轉(zhuǎn)到緊接著 for 循環(huán)的下一條語句。
- 在執(zhí)行完 for 循環(huán)主體后,控制流會跳回上面的 increment 語句。該語句允許您更新循環(huán)控制變量。該語句可以留空,只要在條件后有一個分號出現(xiàn)即可。
- 條件再次被判斷。如果為真,則執(zhí)行循環(huán),這個過程會不斷重復(fù)(循環(huán)主體,然后增加步值,再然后重新判斷條件)。在條件變?yōu)榧贂r,for 循環(huán)終止。
流程圖
實例分析一
有以下for循環(huán)執(zhí)行代碼
較為基礎(chǔ),所以畫圖給大家講解一下for循環(huán)執(zhí)行步驟
1.執(zhí)行for循環(huán)體里的第一個參數(shù),也就是定義一個int整形變量,其變量名為i,并初始化為0
2.執(zhí)行完第一個參數(shù)里的代碼后,會執(zhí)行第二個參數(shù),判斷i是否小于99
3.當?shù)诙€表達式為True時會去執(zhí)行循環(huán)體里的代碼,也就是當i不等于99的時候
4.執(zhí)行完循環(huán)體里的代碼后,就會去執(zhí)行for循環(huán)的第三個參數(shù)也就是++i
當以上流程執(zhí)行完成之后,進入非第一次執(zhí)行循環(huán)時就不會執(zhí)行for循環(huán)第一個參數(shù)了
而是直接去執(zhí)行第二個參數(shù)里的判斷表達式
然后在去執(zhí)行循環(huán)體里的代碼
然后在執(zhí)行for循環(huán)的第三個參數(shù)
直到參數(shù)二:i>99的時候循環(huán)才會結(jié)束
i=98是最后一次循環(huán),(i++/++i在for循環(huán)沒有區(qū)別,不知道為啥,反正結(jié)構(gòu)一樣),這是i=99會執(zhí)行第二步,不滿足條件,跳出循環(huán)體,如果在循環(huán)體內(nèi)打印i,i的最終結(jié)果為98(從0開始一共執(zhí)行了99次,從1開始一共執(zhí)行了98次,),如果在循環(huán)體外打印i,i的最終結(jié)果為99,大概這樣
for循環(huán)的執(zhí)行順序(實例詳解)
實例代碼
#include <stdio.h> #include <srdlib.h> int main(void) { char c; for(c=getchar();getchar()!='#';c=getchar()) putchar(c); }
運行結(jié)果如下:
這是怎么執(zhí)行的呢?
首先需要明確的一點是,for循環(huán)語句的執(zhí)行順序
先舉一個簡單的例子,
for(int i=0;i<10;i++){
//循環(huán)體
}
執(zhí)行數(shù)序是:
i=0 初始化初值
i<10 進行判斷,如果條件為真,則繼續(xù)執(zhí)行
執(zhí)行循環(huán)體代碼
i++ 變量i自增
回到第2步,一直循環(huán)下去,直到第2步為假, 退出循環(huán).
總結(jié)一下:
for(條件①;條件②;條件③){
循環(huán)體④
}
執(zhí)行順序如下:
①②④③ ②④③ ②④③... ...直到結(jié)束
我們再來分析一下開頭的案例
控制臺輸入:12345#
首先執(zhí)行第一個getchar(),得到c=1;
然后執(zhí)行第二個getchar(),得到c=2,同時判斷 2 != '#' ;
然后執(zhí)行循環(huán)體輸出1;
然后執(zhí)行第三個getchar(),得到c=3;
(此時一輪循環(huán)結(jié)束,回到for循環(huán)的條件②執(zhí)行第二輪循環(huán))
執(zhí)行第二個getchar(),得到c=4,同時判斷 4!= '#' ;
然后執(zhí)行循環(huán)體輸出3;
然后執(zhí)行第三個getchar(),得到c=5;
(第二輪循環(huán)結(jié)束,再次回到for循環(huán)的條件②執(zhí)行第三輪循環(huán))
執(zhí)行第二個getchar(),得到c=#,判斷 ‘#'= '#' ,循環(huán)結(jié)束;
相關(guān)文章
基于Qt實現(xiàn)C/C++調(diào)用Matlab函數(shù)全過程
這篇文章給大家詳細介紹了基于Qt平臺實現(xiàn)C/C++調(diào)用Matlab函數(shù)全流程,文中通過圖文和代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01VC++實現(xiàn)文件與應(yīng)用程序關(guān)聯(lián)的方法(注冊表修改)
這篇文章主要介紹了VC++實現(xiàn)文件與應(yīng)用程序關(guān)聯(lián)的方法,涉及VC++針對注冊表的相關(guān)操作技巧,需要的朋友可以參考下2016-08-08C++實現(xiàn)LeetCode(161.一個編輯距離)
這篇文章主要介紹了C++實現(xiàn)LeetCode(161.一個編輯距離),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07C語言數(shù)據(jù)結(jié)構(gòu)圖的創(chuàng)建與遍歷實驗示例
這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)圖的創(chuàng)建與遍歷實驗示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06