邏輯錯誤 (程序設計)

在計算機程序設計中,邏輯錯誤(Logic error)(又叫語意錯誤)是程序錯誤的一種,這種錯誤會導致程序運行出錯,但還不至於崩潰。邏輯錯誤會產生意外的輸出或結果,但並不一定會立即被發現。

邏輯錯誤在編譯語言解釋語言中都可能出現。與語法錯誤的程序不同的是,邏輯錯誤的程序從語法上來說是正確的一段程序,但其運行結果卻與預期不符。[1]邏輯錯誤的唯一表現就是錯誤的運行結果。

在 C++ 語言中,邏輯錯誤是一種特殊的異常logic_error)。

常見原因

編輯

邏輯錯誤的原因可能是語句中出現了差錯(比如公式寫錯)、算法中的錯誤,甚至是選擇了錯誤的算法。此外還有一些其它原因,如類型轉換錯誤、變量作用域錯誤、遺漏的代碼段、對問題或需求的理解有誤等等。

調試邏輯錯誤

編輯

找出邏輯錯誤的辦法之一,是將程序中的變量輸出到文件或打印到屏幕,以定位錯誤所在。雖然這個辦法不是所有情況下都適用,比如在調用了錯誤的子例程時就行不通,但是如果程序由於計算結果有誤而出錯,這種方法最容易找出問題。

示範

編輯

以下用於計算平均數C語言函數含有邏輯錯誤。代碼中缺少了一對括號,因此程序雖然能夠通過編譯並運行,但由於運算符優先級(先乘除,後加減)的緣故,運算結果並不正確。

int average(int a, int b)
{
    return a + b / 2;     /* 应为 (a + b) / 2 */
}

參見

編輯

參考來源

編輯
  1. ^ 了解您的 Bug:三种编程错误. Microsoft. [2015-01-09]. (原始內容存檔於2016-05-29).