首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >语义错误与逻辑错误的区别

语义错误与逻辑错误的区别
EN

Stack Overflow用户
提问于 2015-03-13 16:44:30
回答 4查看 11.5K关注 0票数 10

我从一些关于一般编程概念的文章中读到。我被告知,“语法是规范语言中有效语句构造的正式规则”,而“语义是赋予语言陈述意义的规则集”。从语义的定义上,我觉得它与逻辑相似,如果不是,那么我想知道逻辑错误语义错误之间的区别。

EN

回答 4

Stack Overflow用户

发布于 2017-07-10 21:40:01

关于这些术语的定义似乎有很多混淆,但我的理解是:

语法与拼写和语法有关。

逻辑与程序流程有关。

语义学与意义和语境有关。

如果代码由于键入错误、无效名称、缺少括号或其他语法缺陷而无法执行,则会出现语法错误。

如果语法正确,但一段代码(无意中)从未执行,则操作没有按照正确的顺序执行,操作本身是错误的,或者代码对错误的数据进行操作,则存在逻辑错误。使用错误的条件运算符是一个常见的例子,因此无意中创建了无限循环,或者混合了变量或函数的(有效)名称。

如果您的程序逻辑和语法都是正确的,那么代码将按预期运行,但结果仍然是错误的:您可能有一个语义错误。将度量输入值与帝国值混淆将使您达到此目的。这个程序没有什么问题,只是里程和公里不相加,所以你的面积计算会抛出错误的数字。有种族条件是另一个常见的例子。

票数 10
EN

Stack Overflow用户

发布于 2015-03-13 17:10:06

这里的答案取决于你正在读的书或你所在的班级。在计算机科学的许多领域,语义错误和逻辑错误是完全没有区别的。两者都意味着程序编译了,但是输出是错误的。同样的,它们也意味着两件不同的事情。一个简单的例子是打算在您的程序中使用X+1,但是您输入了X-1。这是一个逻辑错误。如果您输入了X+true,如果语言允许它通过解析器,那么它就是语法错误,但是X+(布尔值真)的结果与X+1不一样。就个人而言,当涉及到定义不清的术语时,我让人们按照他们的喜好定义它们,并从我的程序中删除这些错误,不管它们是什么类型的错误。

票数 3
EN

Stack Overflow用户

发布于 2019-06-06 15:42:47

从根本上区分语义错误和逻辑错误是矛盾的,因为在编程中产生的结果不符合程序的预期功能,第二,逻辑错误导致语义错误,因为程序违背预期的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29037641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档