辨析: 语法错误和语义错误

🔖前言

在写代码的过程中总是会产生各种各样的错误,少分号、分数出现0、死循环等等,在学习编译原理的过程中的语法分析语义分析环节,让我意识到对自己产生的错误需要有一定的概念,即我们产生的错误是语法错误还是语义错误还是运行时错误,这个问题在学习过程中一直困扰着我🙇‍♀️,因此这篇文章记录下自己的学习理解便于之后自己回顾。有理解错误也希望各位大佬能够批评指正( ´・・)ノ(._.`)。👻👻


一、语法错误

导致编译器不可以正常执行程序的语句就叫语法错误。

> 所有的语法错误在语法分析阶段都能够发现。

> 编译不通过,无法运行

我的理解:编译器编译的原理不就是按照一系列规则进行判断是否有错误吗,也就是说我们在写代码过程中不符合我们代码规则的错误就是语法错误,比如少了分号,函数名、变量名等写错都属于我们没有按照规则进行coding导致的,通常涉及到的就是代码的结构或格式错误。
 

二、语义错误

代码可以执行,但是执行的效果不是预期的结果。

> 语义分析阶段不能够发现所有的语义错误,因为语义分析是进行静态语义检测,而不是动态语义检测,因此只能发现部分语义错误。

> 编译通过,可以运行,但是运行的结果和理想结果有出入。

我的理解:就相当于是我们设计上产生的问题,符合规则,但是不符合我们设计的逻辑,导致最终输出的结果和我们的初衷有悖。某种程度上来说算是逻辑错误,也只有在代码的运行阶段才能发现。

分子为0通常情况下就是语义错误。

三、运行时错误

在学习的过程中,发现不仅仅有语法错误和语义错误,还有运行时错误,因此在这对运行时错误进行记录。

> 比如数组越界,输入整型值但是输入的时字符型,出发中除数为0;

> 编译通过,运行时中断


总结

感觉目前了解的还很浅薄,后续继续更新...

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值