<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                通常當你寫函數時會對接收的參數做了隱含的假設。如果這些假設成立,程序沒有問題;如果假設不成立,你的程序可能就會崩潰了。 為了讓你的程序更為健壯,將你的假設明確,以程序文檔的方式寫下來或寫代碼來進行檢查。 比如我們觀察calculateCartesian方法。是否存在對當前對象進行了假設呢?沒錯,我們假設極坐標系的標志量已經設置了并且mag和theta的值是有效的。如果假設不成立,那么這個函數的結果無意義。 一種做法是對函數添加注釋說明先決條件以警告他人。 ~~~ void Complex::calculateCartesian () // 先決條件:當前對象包含有效的極坐標值,其極坐標標志量已設定。 // 后置條件:當前對象包含有效的笛卡爾坐標系和極坐標系的值,兩個標志量皆已設置。 { real = mag * cos (theta); imag = mag * sin (theta); cartesian = true; } ~~~ 同時,我添加了后置條件,即我們認為函數執行完畢后為真的事情。 這些注釋對于閱讀你代碼的人很有用,但更好的辦法是通過代碼來檢查先決條件,并輸出合適的錯誤信息: ~~~ void Complex::calculateCartesian () { if (polar == false) { cout << "calculateCartesian failed because the polar representation is invalid" << endl; exit (1); } real = mag * cos (theta); imag = mag * sin (theta); cartesian = true; } ~~~ exit函數會使程序很快的退出執行。返回值是一個錯誤碼以告訴系統(或該程序執行者)某些錯誤發生。 這種錯誤檢測方式很是常見,于是C++提供了一個內置函數來檢查先決條件并打印錯誤信息。如果你包含了assert.h頭文件,你可以使用一個以布爾值或條件表達式為參數的assert函數。只要參數為真,assert函數就啥也不做。如果參數為假,assert打印一個錯誤信息并退出,用法如下: ~~~ void Complex::calculateCartesian () { assert (polar); real = mag * cos (theta); imag = mag * sin (theta); cartesian = true; assert (polar && cartesian); } ~~~ 第一句assert檢查先決條件(事實上只是一部分先決條件),第二句assert檢查后置條件。 在我的開發環境中,當一個斷言失敗時會得到以下信息: ~~~ Complex.cpp:63: void Complex::calculatePolar(): Assertion ‘cartesian’ failed. Abort ~~~ 信息中會有許多內容可以幫助我跟蹤錯誤,包括文件名和斷言失敗的出錯行,斷言語句的內容和所在函數名。
                  <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>

                              哎呀哎呀视频在线观看