C語(yǔ)言入門(mén):深入理解for循環(huán)語(yǔ)句
for循環(huán)簡(jiǎn)介for循環(huán)相較于while循環(huán)來(lái)說(shuō)更復(fù)雜一些,但也更直觀一些。for循環(huán)的格式為`for(語(yǔ)句1; 語(yǔ)句2; 語(yǔ)句3) {做事;}`。其中語(yǔ)句1一般用來(lái)定義變量,可以不寫(xiě),即只寫(xiě)一個(gè)分
for循環(huán)簡(jiǎn)介
for循環(huán)相較于while循環(huán)來(lái)說(shuō)更復(fù)雜一些,但也更直觀一些。for循環(huán)的格式為`for(語(yǔ)句1; 語(yǔ)句2; 語(yǔ)句3) {做事;}`。其中語(yǔ)句1一般用來(lái)定義變量,可以不寫(xiě),即只寫(xiě)一個(gè)分號(hào)";"。語(yǔ)句2是一個(gè)邏輯值,如果是真,則循環(huán)繼續(xù),如果是假,則循環(huán)結(jié)束。如果是空,則循環(huán)繼續(xù),即變成死循環(huán)。語(yǔ)句3一般是跟語(yǔ)句1一樣,也是可有可無(wú),一般用來(lái)自增或自減,即循環(huán)的步長(zhǎng)。
死循環(huán)示例
```
for (; ; ) {
Console.Write(1);
}
```
這段代碼中,因?yàn)檎Z(yǔ)句2為空,所以即是個(gè)死循環(huán),程序會(huì)不停地輸出"1"。
```
for (; true; ) {
Console.Write(1);
}
```
這段程序中,語(yǔ)句2是邏輯true,所以程序也會(huì)一直不停循環(huán),一直輸出"1"。
```
for (; false; ) {
Console.Write(1);
}
```
在這個(gè)代碼中,語(yǔ)句2為邏輯false,所以程序什么也不會(huì)輸出。
更進(jìn)一步理解for循環(huán)
語(yǔ)句一可以用來(lái)定義變量,并且這個(gè)語(yǔ)句只有循環(huán)開(kāi)始時(shí)執(zhí)行一次。下面我們輸出語(yǔ)句一定義的變量i。
語(yǔ)句一可以同時(shí)定義兩個(gè)同類(lèi)型的變量,中間用逗號(hào)隔開(kāi)。
語(yǔ)句三可以理解為每一次循環(huán)執(zhí)行完成后才執(zhí)行的語(yǔ)句。
```
for (int i9; true; i ) {
Console.Write(i);
}
```
以上代碼和下面的代碼是等價(jià)的:
```
for (int i9; true;) {
Console.Write(i);
i ;
}
```
理解代碼執(zhí)行過(guò)程
讓我們看看下面這個(gè)代碼的執(zhí)行過(guò)程。首先程序執(zhí)行語(yǔ)句一:`int i0;` 然后程序比較語(yǔ)句二:`i<10` 是true還是false,這里明顯是true,所以程序執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體后,執(zhí)行語(yǔ)句三 `i ;`。此時(shí)不會(huì)再執(zhí)行語(yǔ)句一(前面說(shuō)了,語(yǔ)句一只執(zhí)行一次),再比較語(yǔ)句二:`i<10` 是true還是false,這里明顯是true,所以程序執(zhí)行循環(huán)體,如此循環(huán),直到語(yǔ)句二的值是false,也就是直到`i<10`是false,循環(huán)體執(zhí)行完畢。最終結(jié)果是從零輸出到9。
嵌套循環(huán)的應(yīng)用
復(fù)雜一點(diǎn)的循環(huán)實(shí)際上就是循環(huán)的內(nèi)嵌,也就是兩個(gè)循環(huán)嵌套使用。對(duì)簡(jiǎn)單的循環(huán)熟悉了,復(fù)雜的也就簡(jiǎn)單了。大家不需要去研究很多層的嵌套循環(huán),只要把單層的循環(huán)吃透了,那就算你有100層嵌套,說(shuō)白了,也只是單層循環(huán)的疊加,沒(méi)有什么意義。以下給出一個(gè)嵌套循環(huán)的例子,如果看不懂也不用著急,好好練習(xí)單層的循環(huán)就好。