在C语言中什么是语义错误??

本文介绍了C语言中的两类常见错误——语法错误与语义错误,并通过具体示例详细解释了两者的区别。语法错误通常会导致编译失败,而语义错误虽然能够通过编译,但在逻辑上存在问题。
一般的程序错误,粗略一点分的话,可以大致分为语法错误和语义错误。

语法错误可以看作是编码出现了违反C语言规则的错误,一般编译或者链接时,
都会报错的。

而语义错误,也可以叫做逻辑错误,
也就是说你的代码完全符合C语言的规范,不会出现编译/链接的错误,
但是,在逻辑上有错误。
举个简单的例子,
加入编一个代码来统计int数组a的成员总和,成员总数为N:
for(int i=0;i<N;i++;)  //这里在i++后面多了一个分号,这是语法错误
sum=sum+a[i];

for(int i=0;i<=N;i++)  //这里多了一个i=N的取值,这是语义错误
sum=sum+a[i];


又比如:

语义错误,就是语法上没错误,编译可以通过,也可以运行,也可以得到结果,但结果不符合实际,是错的。这就是语义描述错了。

语文里,我们说“雪是白的”是对的,如果说“雪是黑的”,就是语义错误。

C语言中语义错误有各式各样。例如:

#include<stdio.h> 
#include<math.h> 
void main() 
{ double a=5.0,b=4.0,c;
c = sqrt(b-a);
printf("%lf",c);
}
程序没有语法错误,应当是 c = sqrt(a-b);
写成sqrt(b-a); 出现负数开方,错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值