邏輯錯誤 (程序設計)
在計算機程序設計中,邏輯錯誤(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).
這是一篇與程式設計相關的小作品。您可以透過編輯或修訂擴充其內容。 |