逻辑错误 (程序设计)

在计算机程序设计中，逻辑错误(Logic error)（又叫-{zh-hans:语义错误;zh-hant:語意錯誤}-）是程序错误的一种，这种错误会导致程序运行出错，但还不至于崩溃。逻辑错误会产生意外的输出或结果，但并不一定会立即被发现。

逻辑错误在编译语言和解释语言中都可能出现。与语法错误的程序不同的是，逻辑错误的程序从语法上来说是正确的一段程序，但其运行结果却与预期不符。逻辑错误的唯一表现就是错误的运行结果。

在 C++ 语言中，逻辑错误是一种特殊的异常（logic_error）。

常见原因 
逻辑错误的原因可能是语句中出现了差错（比如公式写错）、算法中的错误，甚至是选择了错误的算法。此外还有一些其它原因，如类型转换错误、变量作用域错误、遗漏的代码段、对问题或需求的理解有误等等。

调试逻辑错误 
找出逻辑错误的办法之一，是将程序中的变量输出到文件或打印到屏幕，以定位错误所在。虽然这个办法不是所有情况下都适用，比如在调用了错误的子例程时就行不通，但是如果程序由于计算结果有误而出错，这种方法最容易找出问题。

示范 
以下用于计算平均数的C语言函数含有逻辑错误。代码中缺少了一对括号，因此程序虽然能够通过编译并运行，但由于运算符优先级（先乘除，后加减）的缘故，运算结果并不正确。
int average(int a, int b)
{
    return a + b / 2;     /* 应为 (a + b) / 2 */
}

参见 
 语法错误
 差一错误

参考来源 

计算机错误
程序语言理论