C語(yǔ)言示例講解for循環(huán)的用法
1、循環(huán)語(yǔ)句for的語(yǔ)法
for (表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán);
其中,表達(dá)式1是初始化;表達(dá)式2是判斷;表達(dá)式3是調(diào)整。
示例:用for循環(huán)打印1-10。
int main() { int i = 0; for (i = 1; i < 11; i++) printf("%d ",i); return 0; }
1 2 3 4 5 6 7 8 9 10
有一點(diǎn)需要說(shuō)明一下,如果判斷部分省略的話(huà),就代表判斷的結(jié)果恒為真,代碼就會(huì)進(jìn)入死循環(huán)。如下面的這段代碼:運(yùn)行之后會(huì)一直打印haha
int main() { for (;;) { printf("haha\n"); } return 0; }
加上一些條件:
int main() { int i = 0; int j = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("haha\n"); } } return 0; }
上面的代碼會(huì)打印9次haha,現(xiàn)在省略i=0以及j=0的條件,查看運(yùn)行結(jié)果會(huì)發(fā)現(xiàn) 只打印三次
int main() { int i = 0; int j = 0; for (; i < 3; i++) { for (; j < 3; j++) { printf("haha\n"); } } return 0; }
因?yàn)檫@個(gè)程序是先執(zhí)行j<3的那三次循環(huán),循環(huán)結(jié)束之后,j的值是3;此時(shí)i=1,j=3,已經(jīng)不滿(mǎn)足j<3的條件了,所以不會(huì)再打印haha
2、for循環(huán)中的break以及continue
在for循環(huán)中也是有break以及continue的,它們的意義和在while循環(huán)中的意義幾近相同,差異較小。
關(guān)于break,代碼如下,打印結(jié)果仍為:1 2 3 4
int main() { int i = 0; for (i = 1; i < 11; i++) { if (i == 5) break; printf("%d ", i); } return 0; }
關(guān)于continue,打印結(jié)果為1-4,6-10(與while循環(huán)中的continue的執(zhí)行結(jié)果不一樣),將上述代碼中的break改為continue即可。運(yùn)行結(jié)果如下:
1 2 3 4 6 7 8 9 10
運(yùn)行結(jié)果可以看出跳過(guò)了5,因?yàn)楫?dāng)i等于5時(shí),會(huì)跳過(guò)打印的那條語(yǔ)句,但是跳過(guò)打印之后還要執(zhí)行i++,所以后面的6-10依然會(huì)被打印。
for循環(huán)里面的continue會(huì)跳到調(diào)整部分;而while循環(huán)里面的continue則會(huì)跳轉(zhuǎn)出循環(huán)。
3、for語(yǔ)句的循環(huán)變量控制的一些建議
不可以在for循環(huán)體內(nèi)修改循環(huán)變量,防止for循環(huán)失去控制
下面的代碼就屬于在循環(huán)體內(nèi)改變循環(huán)變量,這樣不好
int main() { int i = 0; int j = 0; for (i = 0; i < 3; i++) { printf("%d ",i); int j = 0; for (j = 0; j < 3; j++) { printf("haha\n"); } } return 0; }
建議for語(yǔ)句的循環(huán)控制變量的取值采用“前閉后開(kāi)區(qū)間”寫(xiě)法。
for (i = 1; i < 10; i++)
這種寫(xiě)法就是“左閉右開(kāi)”區(qū)間;for (i = 1; i <= 9; i++)
這樣的語(yǔ)句跟左閉右開(kāi)的寫(xiě)法是一樣的意思,但是不建議這么寫(xiě)。左閉右開(kāi)的寫(xiě)法可以使得程序的可讀性更高。
4、for循環(huán)的變種
用兩個(gè)變量來(lái)控制循環(huán)也是可以的。
int main() { int x, y; for (x = 0, y = 0; x < 2 && y < 5; ++x, y++) { printf("haha\n"); } return 0; }
運(yùn)行結(jié)果會(huì)打印兩個(gè)haha
5、題目
看看下面的代碼會(huì)循環(huán)多少次?
int main() { int i = 0; int k = 0; for (i = 0, k = 0; k = 0; i++, k++) { k++; } return 0; }
運(yùn)行結(jié)果:
運(yùn)行結(jié)果啥也沒(méi)有,因?yàn)樵跅l件按斷處的k=0屬于是賦值,將0賦值給了k,0為假,這里這條語(yǔ)句它就不是判斷條件了,所以會(huì)循環(huán)0次,打印無(wú)結(jié)果。
到此這篇關(guān)于C語(yǔ)言示例講解for循環(huán)的用法的文章就介紹到這了,更多相關(guān)C語(yǔ)言for循環(huán)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VisualStudio2022提交git代碼的方法實(shí)現(xiàn)
本文主要介紹了VisualStudio2022提交git代碼的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07C++實(shí)現(xiàn)神經(jīng)BP神經(jīng)網(wǎng)絡(luò)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)神經(jīng)BP神經(jīng)網(wǎng)絡(luò),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05詳解C語(yǔ)言中結(jié)構(gòu)體(struct)的用法
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中結(jié)構(gòu)體(struct)的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下2022-08-08C++模擬Linux Shell編寫(xiě)一個(gè)自定義命令
這篇文章主要介紹了C++如何模擬Linux Shell實(shí)現(xiàn)編寫(xiě)一個(gè)自定義命令,本文通過(guò)實(shí)例代碼進(jìn)行命令行解析,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12c語(yǔ)言中缺省參數(shù)的類(lèi)型總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于c語(yǔ)言中缺省參數(shù)的類(lèi)型總結(jié)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)參考下。2021-09-09深入理解C++模板如何實(shí)現(xiàn)多態(tài)思想
這篇文章主要為大家詳細(xì)介紹了C++模板如何實(shí)現(xiàn)多態(tài)的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們深入了解C++有一定的幫助,感興趣的可以了解一下2023-03-03