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