循環(huán)語句是幾乎每個程序都會用到的,它的作用就是用來實現(xiàn)需要反復(fù)進(jìn)行多次的操作。如一個12M的51芯片應(yīng)用電路中要求實現(xiàn)1毫秒的延時,那么就要執(zhí)行1000次空語句才可以達(dá)到延時的目的(當(dāng)然可以使用定時器來做,這里就不討論),如果是寫1000條空語句那是多么麻煩的事情,再者就是要占用很多的存儲空間。我們可以知道這1000條空語句,無非就是一條空語句重復(fù)執(zhí)行1000次,因此我們就可以用循環(huán)語句去寫,這樣不但使程序結(jié)構(gòu)清晰明了,而且使其編譯的效率大大的提高。在C語言中構(gòu)成循環(huán)控制的語句有while,do-while,for和goto語句。同樣都是起到循環(huán)作用,但具體的作用和用法又大不一樣。我們具體來看看。 goto語句 這個語句在很多高級語言中都會有,記得小時候用BASIC時就很喜歡用這個語句。它是一個無條件的轉(zhuǎn)向語句,只要執(zhí)行到這個語句,程序指針就會跳轉(zhuǎn)到goto后的標(biāo)號所在的程序段。它的語法如下: goto 語句標(biāo)號; 其中的語句標(biāo)號為一個帶冒號的標(biāo)識符。示例如下 void main(void) { unsigned char a; start: a++; if (a==10) goto end; goto start; end:; } 上面一段程序可以說是一個死循環(huán),沒什么意思,只是說明一下goto的用法。這段程序的意思是在程序開始處用標(biāo)識符"start:"標(biāo)識,表示程序這是程序的開始,"end:"標(biāo)識程序的結(jié)束,標(biāo)識符的定義應(yīng)遵循前面所講的標(biāo)識符定義原則,不能用C的關(guān)鍵字也不能和其它變量和函數(shù)名相同,不然就會出錯了。程序執(zhí)行a++,a的值加1,當(dāng)a等于10時程序會跳到end標(biāo)識處結(jié)束程序,否則跳回到start標(biāo)識處繼續(xù)a++,直到a等于10。上面的示例說明goto不但可以無條件的轉(zhuǎn)向,而且可以和if語句構(gòu)成一個循環(huán)結(jié)構(gòu),這些在C程序員的程序中都不太常見,常見的goto語句用法是用它來跳出多重循環(huán),不過它只可以從內(nèi)層循環(huán)跳到外層循環(huán),不能從外層循環(huán)跳到內(nèi)層循環(huán)。在下面說到for循環(huán)語句時再略為提一提。為何大多數(shù)C程序員都不喜歡用goto語句?那是因為過多的使用它時會程序結(jié)構(gòu)不清晰,過多的跳轉(zhuǎn)就使程序又回到了匯編的編程風(fēng)格,使程序失去了C的模塊化的優(yōu)點 |