-
goto 語句是一條傳輸指令,它直接將 CPU 的當前指令指標 IP 更改為 goto 語句指向的指令位址,然後從該位址繼續執行。 從組合語言的角度來看,goto語句對應組合語言JMP指令,但組合語言的危險在於JMP指令的跳轉是無約束的或者約束較少的,機器指令級別可以隨意跳轉,除非指令在執行前經過嚴格檢查,這其實是非常困難的。
早期的演算法語言,如Fortran、Pascal、Basic等,都支援goto語句,因為當時的語句較少,分支結構和迴圈結構需要借助goto語句來實現。 然而,這些高階語言對 goto 語句施加了嚴格的限制,例如:(1) 它們可以從結構內部跳轉到外部(條件、迴圈),反之亦然; (2)不允許直接跳出子程式,而是使用類似於return的return語句退出子程式,當然,絕對禁止從主程式跳轉到子程式中; 等一會。
這些限制仍然適用於也支援 goto 語句的現代演算法語言。
隨著語言的結構化和模組化,一些高階語言不再支援 goto 語句。 這樣做的目的是使程式易於閱讀和理解,並促進程式的維護。 然而,事情總是有兩面性的,通過結構化和模組化,程式的執行效率略有降低。
比如,在對八皇后進行程式設計後,你就會知道,當乙個結構有多個出口直接“短路”跳轉時,效率會更高,如果用狀態變數再通過條件語句來判斷,肯定會降低效率。 我認為這是一些演算法語言仍然保留 goto 語句的原因之一。
就像原子能一樣,它既可以造福人類,也可以對人類造成嚴重傷害。 goto語句也有其兩面性,在程式設計中盡量不用,為了追求效率而謹慎使用。
-
目前的程式語言都使用結構化語言,在結構化程式設計中一般不提倡使用 goto 語句
1、程式比較簡單的時候使用goto語句比較靈活,但是當程式比較複雜的時候,容易在程式過程中造成混亂。
2. 編寫帶有 goto 語句的程式對於稍後檢視程式的人來說很困難。
3.除錯程式的過程也會變得困難。
-
goto語句是無條件轉賬語句,其一般格式如下:goto語句編號; 語句標記是按照識別符號規範書寫的符號,放在句子行的前面,標記後加乙個冒號。 語句標籤用作標識語句,並與 goto 語句結合使用。
C 語言不限制指示符在震顫程式中的使用次數,但每個指示符不得相同。 goto 語句的語義是改變程式流的方向,以執行語句標記標識的語句。
Goto 語句通常與條件語句結合使用。 可用於實現條件的傳遞,形成迴圈,跳出迴圈。
在結構化程式設計中,一般不建議使用 goto 語句,以免造成程式流混亂,使程式難以理解和除錯。
rem 將日期格式設定為 yyyymmdd
如果 %date%==20080806 轉到 doitrem 如果時間等於 20080806 跳轉到指示符 doitrem 如果時間不等於,請繼續下一步。 >>>More