⑴ 程序无法编译通过问题,怎么解决
关于程序无法通过编译的问题,其错误类型肯定是有很多种的。根据我多年的编程调试经验,可以给你提供以下几种类型的错误,供你参考(以下以 C 语言编程经验为例,其他编程语言的调试思路也是同理的)。
其中最容易调试的程序错误类型就是:
(1)、在编写源程序过程中出现的各种语法错误。这种错误主要是由于刚刚开始学习编程,对编程语言的语句、以及语法结构还不是很清晰造成的,这种错误是最容易进行调试的,因为语法错误,编译器连编译都无法通过(通常会显示出来具体是哪一行出现错误),这样的话,你就可以直接到出错的那一行进行修改源代码了;
(2)、若是经过一段时间的上机练习,对学习编程的初始阶段已经较为熟练了、且语法错误较少了之后,之后就会遇到更加复杂、并且难于调试的语义错误。例如在 C 语言中,对于如下代码:
void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100 )
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
但是若在逻辑判断语句:if( n == 100) 中,如果误将“==”(逻辑等于)写成了“=”(赋值等于),那么在 scanf("%d", &n) 语句中,无论你输入的 n 等于多少,一旦执行 if 语句,那么 将 100 这个数字赋给变量 n,则该逻辑表达式的值总是 1,程序的运行结果必定总是输出:n is 100。
而该程序的实际思路是:从键盘输入一个整数,如果该整数等于 100,则输出:n is 100 !如果输入的整数不等于 100 的话,则输出:n is not 100 !
像这样的逻辑错误(在对 C 语言源程序进行编译时,C 语言编译器是检查不出来的),如果没有丰富的程序调试经验,程序调试起来就是非常困难的。
(3)、其它的错误类型例如:数组越界、非法使用了未初始化的指针变量、未对指针变量进行有效的内存分配,就向那一块存储区域读写数据,等等。这些都会造成程序崩溃,严重的就会造成操作系统崩溃。
⑵ c语言源程序在编译,链接,运行时,可能发生的错误类型有哪些
刚毕业时也是很迷茫,但是我很幸运的是我遇到了我的幸福之星,他是一个非常牛的人。其实C和C++是一个想学编程的最好的入门语言。但是如果你要走这条路的话那你可要准备做好受打击了心里准备了,因为这两门语言的确是很难的,要学的的话你至少要学四到五年才能去做一些东西。它俩都是和底层打交道的,所以要考虑计算机硬件的一些东西。除此之外你还要懂好多的,不过任何事都一样难学肯定是学出山也很牛了,是这样的你可以看看美国微软的程序员不就是搞底层开发的吗?当然对这两门语言你做到这样就可以了。对C你只要把谭浩强《C程序设计》上的每一道题练的很熟就可以了,一定要记得只有你自己编出来才是你的,看懂的永远也不是你的。对于C++它不是练你的编程的逻辑思维的,而是让你有一个面向对象的思想。你要做的是不停的去思考。还有等你学完之后,可试着朝“B/S模式”开发应用发展。当然这只是我的意见。我觉的咱现在还是以挣钱为主,其他的以后再说了,你觉的呢。最后祝你学业有成!好了就给你说到此了。有问题网络见!
⑶ 初学编程的人一般会遇到的几个问题
对于一个初学编程的人来说,首先遇到的问题就是:(1)、在编写源程序过程中出现的各种语法错误。这种错误主要是由于刚刚开始学习编程,对编程语言的语句、以及语法结构还不是很清晰造成的,这种错误是最容易进行调试的,因为语法错误,编译器连编译都无法通过;(2)、当对初始编程较为熟练了、且语法错误较少了之后,之后就会遇到更为复杂、并且难于调试的语义错误。例如在 C 语言中,对于如下代码:
void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100)
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
在逻辑判断语句:if( n == 100) 中,如果误将“==”(逻辑等于)写成了“=”(赋值等于),那么在 scanf("%d", &n) 语句中,无论你输入的 n 等于多少,一旦执行 if 语句,那么 将 100 这个数字赋给变量 n,则该逻辑表达式的值总是 1,程序的运行结果必定总是输出:n is 100。
而该程序的实际思路是:从键盘输入一个整数,如果该整数等于 100,则输出:n is 100 !
如果输入的整数不等于 100 的话,则输出:n is not 100 !
像这样的逻辑错误(在编译源程序时,C 语言编译器是检查不出来的),如果没有丰富的程序调试经验,程序调试起来就是非常困难的。
所以说,如果想学习编程,必须要勤于上机编辑、调试、运行程序,而不能够只是在书本上阅读程序。只有这样,才能够在较短的时间内,使自己的编程水平有一个较大的提高。
⑷ compile error是什么错误
compile error 是C语言编辑错误。
1、变量未定义就使用,或定义后使用位置超出了定义的作用域。
说明:如b=25但程序并未在使用前定义好b的类型,还应注意变量作用域。
2、 括号不匹配。
说明:()、[]、{}一定要有始就得有终。
3、使用非法类型。
说明:如__int64在GCC编译器下不识别,你却用它。
4、需少分号。
说明:忘了语句以一个分号结束。
5、用函数未引头文件。
说明:如printf函数在G++中未包含stdio.h文件。GCC较G++稍宽松些此处。
6、 包含非标准头文件。
说明:如conio.h并非标准库中定义的头文件。
7、使用非标准库函数。
说明:如itoa、strupr等并不是C标准库中的函数,不能使用。
8、有非法字符。
说明:一般是你网上或幻灯片里粘贴过来的代码有非常字符引起。
9、自定义函数未声明。
说明:自定义函数一定要先声明再使用。
(4)编译源程序中出现的各种错误扩展阅读
程序编译特点:
1、数据结构分析和综合时所用的主要数据结构,包括符号表、常数表和中间语言程序。符号表由源程序中所用的标识符连同它们的属性组成,其中属性包括种类(如变量、数组、结构、函数、过程等)、类型(如整型、实型、字符串、复型、标号等),以及目标程序所需的其他信息。
2、常数表由源程序中用的常数组成,其中包括常数的机内表示,以及分配给它们的目标程序地址。中间语言程序是将源程序翻译为目标程序前引入的一种中间形式的程序,其表示形式的选择取决于编译程序以后如何使用和加工它。
3、常用的中间语言形式有波兰表示、三元组、四元组以及间接三元组等。
⑸ 编译proc 出现这样的错误是什么原因
虽然我没有看到你的具体的程序源代码,但是根据我多年编写程序源代码的经验,可以给你提供如下一些信息,供你参考。关于编程过程中出现的错误类型有很多种,其中最容易调试的程序错误是:
(1)、在编写源程序过程中出现的各种语法错误。这种错误主要是由于刚刚开始学习编程,对编程语言的语句、以及语法结构还不是很清晰造成的,这种错误是最容易进行调试的,因为语法错误,编译器连编译都无法通过(通常会显示出来具体是哪一行出现错误),这样的话,你就可以直接到出错的那一行进行修改源代码了;
(2)、若是经过一段时间的上机练习,对初始编程已经较为熟练了、且语法错误较少了之后,之后就会遇到更为复杂、并且难于调试的语义错误。例如在 C 语言中,对于如下代码:
void main( )
{
int n ;
scanf("%d", &n) ;
if( n == 100 )
printf(" n is 100 !\n") ;
else
printf(" n is not 100 !\n") ;
}
在逻辑判断语句:if( n == 100) 中,如果误将“==”(逻辑等于)写成了“=”(赋值等于),那么在 scanf("%d", &n) 语句中,无论你输入的 n 等于多少,一旦执行 if 语句,那么 将 100 这个数字赋给变量 n,则该逻辑表达式的值总是 1,程序的运行结果必定总是输出:n is 100。
而该程序的实际思路是:从键盘输入一个整数,如果该整数等于 100,则输出:n is 100 !如果输入的整数不等于 100 的话,则输出:n is not 100 !
像这样的逻辑错误(在编译源程序时,C 语言编译器是检查不出来的),如果没有丰富的程序调试经验,程序调试起来就是非常困难的。
所以说,如果想学习编程,必须要勤于上机编辑、调试、运行程序,而不能够只是在书本上阅读程序。只有这样,才能够在较短的时间内,使自己的编程水平有一个较大的提高。
⑹ 编译的时候能发现哪些错误
词法分析阶段能够检测出输入中不能形成源语言任何记号的错误字符串。语法分析阶段可以确定记号流中违反源语言结构(语法)规则的错误。语义分析阶段试图检测出具有正确语法结构但对操作无意义的部分。例如,我们试图将两个标识符相加,其中一个标识符是数组名,而另一个标识符却是过程名。(编译原理-龙书原话)。其他错误例如算法错误编译程序检测不出。