|
break可以離開目前switch、for、while、do
while的區塊,並前進至區塊後下一個陳述句,在switch中主要用來結束陳述句進行至下一個case的比對,在for、while與do
while中,主要用於中斷目前的迴圈執行,如果break出現並不是內含在for、while迴圈中或switch陳述中,則會發生編譯錯誤,
break的例子我們之前看過不少,這邊不再舉例。 continue的作用與break類似,主要使用於迴圈,所不同的是break會結束區塊的執行,而continue只會結束接下來區塊中的陳述句,並 跳回迴圈區塊的開頭繼續下一個迴圈,而不是離開迴圈,例如: int i;
for(i = 1; i < 10; i++) { if(i == 5) break; printf("i = %d\n", i); } 這段程式會顯示i = 1到4,因為當 i 等於5時就會執行break而離開迴圈,再看下面這個程式: int i;
for(i = 1; i < 10; i++) { if(i == 5) continue; printf("i = %d\n", i); } 這段程式會顯示1到4,與6到9,當 i 等於5時,會執行continue直接結束此次迴圈,這次迴圈cout該行並沒有被執行,然後從區塊開頭頭執行下一次迴圈,所以5並沒有被顯示。 goto是一個很方便,但是最不被建議使用的語法,濫用它的話會破壞程式的架構、使得程式的邏輯難以trace,事實上,在完全不使用goto的情況下, 您也可以使用結構化的語法來撰寫程式。 goto可以在程式中任意跳躍,跳躍前必須先設定好目的地,跳躍時必須指定目的地,例如: start:
.... .... goto start; 其中start就是goto目的地的一個標籤(Label),後面使用冒號,標籤可以出現在程式的任一個地方。 一個簡單的例子是這樣的: #include <stdio.h> 執行結果:
如果您輸入0,則程式會跳至error標籤然後顯示錯誤訊息,並重新跳至begin標籤,然後再執行一次提示與輸入,想想看就知道了,多跳個幾次之後,這 個程式的邏輯馬上會讓您變得混亂不堪。 這個程式還是這麼寫好一些: #include <stdio.h> 總之,最好先忘了goto的存在,多培養結構化程式設計的思考,習慣養成之後就不會再想要用到goto了。 |