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

    這是程式設計的控制邏輯的三種結構,這三種是最基本的控制結構,所有的程式設計問題都可以分解為這三種的一種或幾種的組合。

    如果真的要說有沒有其它控制結構的話,我用過一種模式,不知道算不算,那就是長跳轉。

    例如,多層次的呼叫,呼叫深度可能會有很多層那種,一旦出錯,又要一層一層地退出。一層一層地退出,要在麼一層裡進行判斷,對了就繼續執行,錯了要返回。而且在有些要求執行速度的場合(比如執行在嵌入式的程式)是十分麻煩的,這時一般都是用長跳轉來處理,一個長跳轉就可以直接回到被呼叫的函式,這種不受限制的跳轉,可以跳轉到任意位置並恢復當時的堆疊環境。有興趣的可以瞭解一下setjmp和longjmp,下面是個例子。

    放在Java裡就是異常機制,有些程式設計師有時會用主動拋異常的寫法,直接退出被呼叫了很多層次的方法,最後在最上層方法裡捕捉處理一下異常就達到目的了。不過java的這種拋異常的用法只是程式碼層面實現了,虛擬機器在裡面執行時還是一層一層地判斷了這個異常該被誰捕捉處理,沒有C語言那樣直接修改呼叫堆疊指標,一下子真正跳轉回去。

    雖然實際當中有不少人在用,但不知道這種長跳轉的方式,算不算是一種控制邏輯。

  • 中秋節和大豐收的關聯?
  • 如果一個人自己不發朋友圈,卻每天在看別人的朋友圈,這類人會是什麼心態?