c++ For循環(huán)執(zhí)行順序流程圖解
for 循環(huán)允許您編寫(xiě)一個(gè)執(zhí)行特定次數(shù)的循環(huán)的重復(fù)控制結(jié)構(gòu)。
語(yǔ)法
C++ 中 for 循環(huán)的語(yǔ)法:
for ( init; condition; increment )
{
statement(s);
}
下面是 for 循環(huán)的控制流:
- init 會(huì)首先被執(zhí)行,且只會(huì)執(zhí)行一次。這一步允許您聲明并初始化任何循環(huán)控制變量。您也可以不在這里寫(xiě)任何語(yǔ)句,只要有一個(gè)分號(hào)出現(xiàn)即可。
- 接下來(lái),會(huì)判斷 condition。如果為真,則執(zhí)行循環(huán)主體。如果為假,則不執(zhí)行循環(huán)主體,且控制流會(huì)跳轉(zhuǎn)到緊接著 for 循環(huán)的下一條語(yǔ)句。
- 在執(zhí)行完 for 循環(huán)主體后,控制流會(huì)跳回上面的 increment 語(yǔ)句。該語(yǔ)句允許您更新循環(huán)控制變量。該語(yǔ)句可以留空,只要在條件后有一個(gè)分號(hào)出現(xiàn)即可。
- 條件再次被判斷。如果為真,則執(zhí)行循環(huán),這個(gè)過(guò)程會(huì)不斷重復(fù)(循環(huán)主體,然后增加步值,再然后重新判斷條件)。在條件變?yōu)榧贂r(shí),for 循環(huán)終止。
流程圖

實(shí)例分析一
有以下for循環(huán)執(zhí)行代碼

較為基礎(chǔ),所以畫(huà)圖給大家講解一下for循環(huán)執(zhí)行步驟
1.執(zhí)行for循環(huán)體里的第一個(gè)參數(shù),也就是定義一個(gè)int整形變量,其變量名為i,并初始化為0

2.執(zhí)行完第一個(gè)參數(shù)里的代碼后,會(huì)執(zhí)行第二個(gè)參數(shù),判斷i是否小于99

3.當(dāng)?shù)诙€(gè)表達(dá)式為T(mén)rue時(shí)會(huì)去執(zhí)行循環(huán)體里的代碼,也就是當(dāng)i不等于99的時(shí)候

4.執(zhí)行完循環(huán)體里的代碼后,就會(huì)去執(zhí)行for循環(huán)的第三個(gè)參數(shù)也就是++i

當(dāng)以上流程執(zhí)行完成之后,進(jìn)入非第一次執(zhí)行循環(huán)時(shí)就不會(huì)執(zhí)行for循環(huán)第一個(gè)參數(shù)了

而是直接去執(zhí)行第二個(gè)參數(shù)里的判斷表達(dá)式

然后在去執(zhí)行循環(huán)體里的代碼

然后在執(zhí)行for循環(huán)的第三個(gè)參數(shù)

直到參數(shù)二:i>99的時(shí)候循環(huán)才會(huì)結(jié)束
i=98是最后一次循環(huán),(i++/++i在for循環(huán)沒(méi)有區(qū)別,不知道為啥,反正結(jié)構(gòu)一樣),這是i=99會(huì)執(zhí)行第二步,不滿足條件,跳出循環(huán)體,如果在循環(huán)體內(nèi)打印i,i的最終結(jié)果為98(從0開(kāi)始一共執(zhí)行了99次,從1開(kāi)始一共執(zhí)行了98次,),如果在循環(huán)體外打印i,i的最終結(jié)果為99,大概這樣
for循環(huán)的執(zhí)行順序(實(shí)例詳解)
實(shí)例代碼
#include <stdio.h>
#include <srdlib.h>
int main(void)
{
char c;
for(c=getchar();getchar()!='#';c=getchar())
putchar(c);
}
運(yùn)行結(jié)果如下:
這是怎么執(zhí)行的呢?
首先需要明確的一點(diǎn)是,for循環(huán)語(yǔ)句的執(zhí)行順序
先舉一個(gè)簡(jiǎn)單的例子,
for(int i=0;i<10;i++){
//循環(huán)體
}
執(zhí)行數(shù)序是:
i=0 初始化初值
i<10 進(jìn)行判斷,如果條件為真,則繼續(xù)執(zhí)行
執(zhí)行循環(huán)體代碼
i++ 變量i自增
回到第2步,一直循環(huán)下去,直到第2步為假, 退出循環(huán).
總結(jié)一下:
for(條件①;條件②;條件③){
循環(huán)體④
}
執(zhí)行順序如下:
①②④③ ②④③ ②④③... ...直到結(jié)束
我們?cè)賮?lái)分析一下開(kāi)頭的案例
控制臺(tái)輸入:12345#
首先執(zhí)行第一個(gè)getchar(),得到c=1;
然后執(zhí)行第二個(gè)getchar(),得到c=2,同時(shí)判斷 2 != '#' ;
然后執(zhí)行循環(huán)體輸出1;
然后執(zhí)行第三個(gè)getchar(),得到c=3;
(此時(shí)一輪循環(huán)結(jié)束,回到for循環(huán)的條件②執(zhí)行第二輪循環(huán))
執(zhí)行第二個(gè)getchar(),得到c=4,同時(shí)判斷 4!= '#' ;
然后執(zhí)行循環(huán)體輸出3;
然后執(zhí)行第三個(gè)getchar(),得到c=5;
(第二輪循環(huán)結(jié)束,再次回到for循環(huán)的條件②執(zhí)行第三輪循環(huán))
執(zhí)行第二個(gè)getchar(),得到c=#,判斷 ‘#'= '#' ,循環(huán)結(jié)束;
相關(guān)文章
C語(yǔ)言左旋字符串的三種實(shí)現(xiàn)方式
本文章將使用三種思路實(shí)現(xiàn)字符串的左旋(循環(huán)移動(dòng),截取和拼接,逆序反轉(zhuǎn)),文中通過(guò)代碼示例和圖文介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-03-03
C++內(nèi)存泄漏檢測(cè)和解決方法小結(jié)
內(nèi)存泄露在編程中是常見(jiàn)的一種問(wèn)題,一但程序發(fā)生內(nèi)存泄露問(wèn)題,將導(dǎo)致程序崩潰無(wú)法運(yùn)行,內(nèi)存泄漏是指程序在運(yùn)行過(guò)程中,由于疏忽或錯(cuò)誤導(dǎo)致已分配的內(nèi)存空間無(wú)法被正確釋放,本文給大家就介紹了C++中內(nèi)存泄漏如何檢測(cè)和解決,需要的朋友可以參考下2025-01-01
linux安裝mysql和使用c語(yǔ)言操作數(shù)據(jù)庫(kù)的方法 c語(yǔ)言連接mysql
Linux下使用C語(yǔ)言操作數(shù)據(jù)庫(kù)的方法,我將從MySQL環(huán)境的搭建,MySQL命令的使用到使用C接口來(lái)操作MySQL等過(guò)程詳細(xì)的介紹在Linux下管理MySQL數(shù)據(jù)庫(kù)的方法2014-01-01
C/C++實(shí)現(xiàn)快速排序算法的思路及原理解析
這篇文章主要介紹了C/C++實(shí)現(xiàn)快速排序算法的思路及原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
詳解C語(yǔ)言結(jié)構(gòu)體中的函數(shù)指針
這篇文章主要介紹了詳解C語(yǔ)言結(jié)構(gòu)體中的函數(shù)指針,文中對(duì)函數(shù)指針的基本概念也有講解,需要的朋友可以參考下2016-04-04
C語(yǔ)言手撕一個(gè)Hash表(HashTable)實(shí)例代碼
哈希表(HashTable)是一種非常重要的數(shù)據(jù)結(jié)構(gòu),它可以在常量時(shí)間內(nèi)進(jìn)行插入、查找和刪除操作,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言手撕一個(gè)Hash表(HashTable)的相關(guān)資料,需要的朋友可以參考下2023-03-03
C++數(shù)據(jù)結(jié)構(gòu)紅黑樹(shù)全面分析
今天的這一篇博客,我要跟大家介紹二叉搜索樹(shù)中的另一顆樹(shù)——紅黑樹(shù),它主要是通過(guò)控制顏色來(lái)控制自身的平衡,但它的平衡沒(méi)有AVL樹(shù)的平衡那么嚴(yán)格2022-02-02
Qt實(shí)現(xiàn)帶字?jǐn)?shù)限制的文字輸入框
這篇文章介紹了Qt實(shí)現(xiàn)帶字?jǐn)?shù)限制文字輸入框的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

