邏輯錯誤 (程式設計)
外觀
在電腦程式設計中,邏輯錯誤(Logic error)(又叫語意錯誤)是程式錯誤的一種,這種錯誤會導致程式執行出錯,但還不至於崩潰。邏輯錯誤會產生意外的輸出或結果,但並不一定會立即被發現。
邏輯錯誤在編譯語言和解釋語言中都可能出現。與語法錯誤的程式不同的是,邏輯錯誤的程式從語法上來說是正確的一段程式,但其執行結果卻與預期不符。[1]邏輯錯誤的唯一表現就是錯誤的執行結果。
在 C++ 語言中,邏輯錯誤是一種特殊的異常(logic_error)。
常見原因
[編輯]邏輯錯誤的原因可能是陳述式中出現了差錯(比如公式寫錯)、演算法中的錯誤,甚至是選擇了錯誤的演算法。此外還有一些其它原因,如類型轉換錯誤、變數作用域錯誤、遺漏的代碼段、對問題或需求的理解有誤等等。
除錯邏輯錯誤
[編輯]找出邏輯錯誤的辦法之一,是將程式中的變數輸出到檔案或列印到螢幕,以定位錯誤所在。雖然這個辦法不是所有情況下都適用,比如在呼叫了錯誤的次常式時就行不通,但是如果程式由於計算結果有誤而出錯,這種方法最容易找出問題。
示範
[編輯]以下用於計算平均數的C語言函數含有邏輯錯誤。代碼中缺少了一對括號,因此程式雖然能夠通過編譯並執行,但由於運算子優先級(先乘除,後加減)的緣故,運算結果並不正確。
int average(int a, int b)
{
return a + b / 2; /* 应为 (a + b) / 2 */
}
參見
[編輯]參考來源
[編輯]- ^ 了解您的 Bug:三种编程错误. Microsoft. [2015-01-09]. (原始內容存檔於2016-05-29).
這是一篇與程式設計相關的小作品。您可以透過編輯或修訂擴充其內容。 |