回覆列表
  • 1 # 中外古今說說

    C語言中儘量避免的不是goto,而是無條件使用goto。

    組合語言中是有大量跳轉指令,但是那些不是無條件跳轉,前面肯定都要有ifne,ifeq這些條件判斷的。注意,在組合語言的使用中,雖然有jump這些,但是也不是就建議無條件的使用這些跳轉指令,肯定是要配合一定條件判斷來使用的。

    經常編碼的人都知道,像if、while break、for這些都是包含跳轉功能的,只不過是有一定條件才跳轉。要是彙編真的沒有jump這些跳轉指令了,C語言就連if、while break、for這些都沒法實現了。

    所以,彙編有跳轉很正常,是用來實現程式控制邏輯的必備元素。C語言要避免的是無條件濫用goto。

  • 2 # 沒隆隆

    goto可以往後goto,儘量不要往前goto。使用goto不當,程式碼閱讀起來很費勁,後期維護成本太高,容易出錯,所以一般不推薦使用。

    使用goto的場景主要有跳出多重迴圈,統一處理異常返回,成功返回等。千萬不要往前goto,切記切記。

    跳轉指令只有有if,while等邏輯控制的,都會彙編成跳轉指令。

  • 3 # php設計模式

    彙編和c比較,組合語言更加低階和原始,c語言相對高階人性化。

    組合語言沒有if和for結構,沒有continue和break語句,只能用最原始的跳轉,來做分支選擇、迴圈退出這樣的事情。

    c語言的結構豐富起來了,即使不用goto,也完全沒有跳轉方面的問題。能避免就儘量避免,有更好的選擇,為什麼還去使用原始的被淘汰的呢?

    我習慣有高階的特性就儘量用高階的特性,越多的關鍵字只會增加智力負擔,尤其是對有選擇困難的同學。

  • 4 # 木匠49743941

    跳轉是剛需。任何程式語言的邏輯上都需要跳轉。組合語言只是反映了這個本質的要求。素質不高的程式設計師。寫出來的跳轉有可能就成了死迴圈。用c語言程式設計的時候。c語言是高階語言。有很多替代方法,避免了直接跳轉。用匯編語言的時候,就沒有了c語言的便利。程式設計師就必須謹小慎微的寫好邏輯,避免死迴圈,直接用跳轉。

  • 5 # 古老農民

    組合語言說是語言,其本質是機器指令的符號化,其詞彙與機器指令一一對應,用匯編語言寫程式需熟悉硬體結構,則可最大程度利用和發揮硬體效能,跳轉是多次重複使用空間的一種方法,這樣既可以節省儲存單元,也可提高效率。這對於依賴硬體的應用很有必要。C語言是高階語言,更接近人們的自然語言,編寫程式時按人的思維邏輯順序描述,後面的處理不用考慮前面的空間利用,所以很少跳轉,若跳轉多了反而容易破壞敘述的邏輯關係。當然高階語言也是要變換成機器指令的,但這是編譯軟體去完成的。

  • 6 # MosquitoVon

    程式中指令流中經常會使用到條件選擇機能,在組合語言中唯一實現選擇執行程式碼的指令是跳轉。

    作為結構化語言,選擇執行程式碼的途徑很多,機能的模組化(函式呼叫return),條件選則(if,switch),迴圈(for)等,這些指令的使用不僅方便書寫而且使得編碼的邏輯清晰,可讀性高。而使用簡單的無條件跳轉則大大降低了程式的可讀性,宜儘量避免。

  • 中秋節和大豐收的關聯?
  • 為什麼說四大文明古國之一的印度喪失了古文化?