逻辑错误 (程序设计)
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
在计算机程序设计中,逻辑错误(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).
![]() | 这是一篇与程序设计相关的小作品。您可以通过编辑或修订扩充其内容。 |