<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                編程是個復雜的過程,而且因為由人來完成,所以難免出現錯誤。由于一些特殊的原因,編程錯誤稱為“bug”,而跟蹤和修正錯誤的過程稱為“debugging”,中文叫做**調試**。 程序中會出現幾種不同類型的錯誤,分清這幾類錯誤有助于快速找出問題。 ### 1.3.1 編譯時錯誤 編譯器只能翻譯語法正確的程序,當存在語法問題時,編譯失敗,你也就無從運行程序了。**語法**指程序的結構和結構的規則。 例如,英語中的句子必須以大寫字母開頭并以句號結尾。不以大寫字母開頭或者不以句號結尾的句子在語法上都是錯誤的。 對大多數讀者而言,語法錯誤不是個嚴重問題,我們讀e e cummings的詩歌時并不會感覺到很多語法錯誤就是這個原因。 編譯器可沒這么寬容。程序中不管哪里出現了一個語法錯誤,編譯器都會打印錯誤信息并退出,結果就是沒辦法執行程序。 更麻煩的是,C++中的語法規則比英語要多得多,而且編譯器給出的錯誤提示信息不見得總有用。在我們剛學著編程的前幾周,你可能要花很多時間來查找語法錯誤。隨著經驗的增長,你犯的錯會越來越少,找出錯誤也會更快。 ### 1.3.2 運行時錯誤 第二類錯誤是運行時錯誤,因為這類錯誤在程序運行時才會出現。 下面幾周我們編寫的都是很簡單的程序,運行時錯誤非常少見,可能過一段時間才會遇到。 ### 1.3.3 邏輯與語義錯誤 第三類錯誤是邏輯或語義錯誤。如果程序中有邏輯錯誤,程序仍會正確編譯并運行,編譯器不會生成任何錯誤消息,但是程序運行得不到預期結果。程序執行的不是你需要的功能。其實,你讓程序做什么它就做什么,問題在于,你寫出的代碼和你本來要設計的功能并不一致。也就是說,程序的語義錯了。識別邏輯錯誤可能很復雜,因為這需要你根據程序的輸出和找出程序到底在做什么來倒推問題所在。 ### 1.3.4 實驗性調試 調試應該是你能從本書中學到的最重要的一個技能。雖然調試過程中可能有挫敗感,但調試是編程中最具智慧、挑戰和樂趣的部分之一。 從某種角度看,調試就像偵探工作。你要根據線索來推理各種過程和事件,最終找到結果。 調試又像做實驗。一旦意識到出了問題,你就要修改程序并重新嘗試。如果所做的假設正確,你就能預測對修改后的結果,這就離正確的程序又近了一步。如果假設錯誤,你就要提出新的假設。就像夏洛克?福爾摩斯所說的,“排除了那些不可能的之后,無論剩下什么,即使再不可思議,也一定是真相”(出自柯南道爾的《四簽名》一書)。 對某些人而言,編程和調試是一回事。編程就是逐步調試程序直到它滿足要求為止。這其中的理念是,總是從一個實現部分功能、可以工作的程序開始,然后加以小的改進并隨手調試通過,這樣保證總是有一個可用的程序。 比如Linux,它是個包含成千上萬行代碼的操作系統,最開始卻是Linus Torvalds為探索Intel 80386芯片的功能而開發的一個簡單程序。據Larry Greenfield所說,“Linus Torvalds早期有個項目,是交替打印AAAA和BBBB的程序,這個程序后來發展為了Linux”(出自*The Linux Users' Guide*?Beta版1)。 后續章節會有更多有關調試和其他編程實踐的建議。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看