编译语法错误语义错误
❶ c++中什么是语法错误,什么是编译错误
程序的错误主要分成三种:
编译链接错误;
编译链接错误又分成编译错和链接错。
编译错就是普通意义上的语法错,编译器进行语法检查不通过,也就是程序违背了计算机语言的语法,例如:括号不匹配、变量名拼写错误、用保留字定义变量名等;
链接错是指程序通过了语法检查,但是无法生成可执行文件,最常见的是链接找不到lib库。初学者有时写了函数的声明,但是缺少函数的定义,此时就会出现链接错。
运行错误;
运行错是程序可以执行,但是在执行过程中发生异常,提前退出程序。最常见的是指针越界,打开文件失败继续读取文件,总而言之是让计算机执行一些不能执行的语句。
逻辑错误
逻辑错是程序也能运行,就是结果不对,主要原因有:程序算法本身错误,程序和算法不同义等。
例如:新手经常将判断相等的==写成=赋值,往往就会导致逻辑错。
你的BD(int,int); 是一句函数调用?还是一句函数声明?
❷ 语意错误是什么呢
语义错误指写作中由于对词语的含义理解不清造成的语言错误,它就是语法上没错误,编译可以通过,也可以运行,也可以得到结果,但结果不符合实际,是错的。这就是语义描述错了。语文里,我们说“雪是白的”是对的,如果说“雪是黑的”,就是语义错误。
一般的程序错误,粗略一点分的话,可以大致分为语法错误和语义错误。语法错误可以看作是编码出现了违反c语言规则的错误,一般编译或者链接时,都会报错的。而语义错误,也可以叫做逻辑错误,也就是说你的代码完全符合C语言的规范,不会出现编译/链接的错误,但是,在逻辑上有错误。
对词义理解不清有三种情况:
1、对词语的概念义理解不清。例如:混淆了“诞辰”与“诞生”的意义,就出现了“纪念鲁迅先生诞辰一百周年”的错误说法。
2、对词语的修辞义理解不清。例如:对“严肃”一词的感情色彩理解不清,就出现了“还有几名日本兵,提着上了刺刀的步枪,严肃而呆板地站在伪警后面”的错误描写。
3、对词语的语法意义理解不清。例如对“逃荒”这个动词的不及物性没有掌握,就出现了“全村有三百户,逃荒了二百户”的错误句子。此外,常见的生造词语,含义令人难以理解,也属于语义错误。例如:“这是令人感奋的,但我总是提不起兴趣来”,“奋感”是生造的词语,难以被人接受。
❸ c++中什么是语法错误,什么是编译错误
简单的说,
语法错误:就是你的c++代码书写有问题,不是标准定义的;(比如
int写成了in,漏写个分号,漏写个括号,把int型参数赋值给字符串,等等),一般语法错误在编译时都是可以被编译器发现,发出警示的;
编译错误:是在编译时你本身的代码没问题,但是调用的一些文件、函数库,找不到,或者和你想要使用的版本不一致,导致函数参数不一样。
大多数情况下我们分类错误都是说
语法错误
和
逻辑错误;
逻辑错误:指你的语法正常,编译也能通过,但是按你的代码执行会出错。包括执行结果与预期不一致,或者程序执行就挂掉(一般是内存泄露等问题)
❹ 编译错误,怎么回事
关于编译问题,如果说是编译错误发生在自己编写源程序的过程中的话,那么问题的原因还是比较复杂的。通常关于用户编写的源程序的编译出错问题,这是一个很复杂的问题。因为编译错误有很多种。例如:语法错误、系统库连接错误、语义错误、数组越界、或者内存越界等等。
通常语法错误是最好解决的,因为源程序的语法出错了,连编译这一关都通不过,并且会告诉你在哪一行出错了,这时候是最容易调试程序的。最难调试的就是:源程序虽然编译通过了,但是程序的运行结果却是错误的,这种是最难调试的。所以说,你必须要把详细的出错信息写出来,别人们才好帮助你进行分析。
❺ 编译原理词法语法语义错误题!!!!!求大神啊!!!!
错误如下
在main函数中,调用了max函数取三个值中的最大值,而在max函数的声明和定义中都只有两个参数,属于语义错误,应该把参数中加一个“int z”(在max函数的定义中出现了名为c的变量,不能重名,故用z)
在max函数中,第二行的“c==a>b?a:b”从上下文来看没有任何意义,应该把条件表达式改为赋值表达式(“==”改为“=”),这个部分在语法分析中不会出问题,故属于语义错误(编译器不会报错)
在max函数的第三行中,额。。我也不知道这个想表达什么,而且点号一般用于获取结构体中的成员,属于后缀表达式,其yacc语法为
postfix_expression '.' IDENTIFIER
而在语法和词法分析中都不会出错,属于语义错误,应改为“c=c > z ? c : z;”
这样改动后,max中的局部变量d就没有了什么作用,建议删去
❻ 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];
❼ 编译程序可发现源程序全部的什麽错误和部分的什麽错误
编译程序可发现源程序全部的“语法”错误和部分的“语义”错误。
特意找了详细解释帮你理解:用户编写的源程序不可避免的会有一些错误,这些错误大致可以分为静态错误和动态错误。动态错误也称动态语义错误,它们发生在程序运行时,例如除数为0、引用数组元素下标错误等。静态错误是之编译阶段发现的程序错误,可分为语法错误和静态语义错误,如单词拼写错误、标点符号错误、表达式缺少操作数、括号不匹配等有关语言结构上的错误称为语法错误,而语义分析时发现的运算符与运算对象不合法等错误属于静态语义错误。语义分析阶段主要检查源程序是否包含静态语义错误,而一般的编译器很难检查出动态语义错误。
❽ 在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];
❾ 语义错误是什么意思
一般的程序错误,粗略一点分的话,可以大致分为语法错误和语义错误。
在计算机程序设计中,语义错误(Logic error)(又叫逻辑错误)是程序错误的一种,这种错误会导致程序运行出错,但还不至于崩溃。逻辑错误会产生意外的输出或结果,但并不一定会立即被发现。
逻辑错误在编译语言和解释语言中都可能出现。与语法错误的程序不同的是,逻辑错误的程序从语法上来说是正确的一段程序,但其运行结果却与预期不符。逻辑错误的唯一表现就是错误的运行结果。
在 C++ 语言中,逻辑错误是一种特殊的异常。
逻辑错误的原因可能是语句中出现了差错(比如公式写错)、算法中的错误,甚至是选择了错误的算法。此外还有一些其它原因,如类型转换错误、变量作用域错误、遗漏的代码段、对问题或需求的理解有误等等。
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。