c语言调试常见错误及解决办法

c语言调试常见错误及解决办法

ID:2845455

大小:224.39 KB

页数:9页

时间:2017-11-18

c语言调试常见错误及解决办法_第1页
c语言调试常见错误及解决办法_第2页
c语言调试常见错误及解决办法_第3页
c语言调试常见错误及解决办法_第4页
c语言调试常见错误及解决办法_第5页
资源描述:

《c语言调试常见错误及解决办法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言调试常见错误及解决办法 C语言调试常见错误及解决办法程序开发过程的各个阶段都可能发生错误,可以将程序设计中的错误分成五类:第一类,编译期错误。这是指在程序的编译过程中由编译程序识别或检查出来的错误,常称之为"语法错误"。诸如不符合规定的语句格式、对象说明与使用不一致、不正确的分隔符、不存在的标号、不正确的初始化数据、不恰当的循环嵌套等等。在编译期发现一个错误后,编译工作并不立即停止,而是尽可能多地找出源程序中的全部错误。第二类,连接错误。这是指连接程序在装配目标程序时发现的错误,通常由于函数名书写错误、缺少包含文件

2、或包含文件的路径错误等原因引起的。第三类,运行期错误。这是指可执行程序执行过程中发现的错误。如在计算过程中遇到了除数为零的错误、求一个负数的平方根等等。编译系统发现这类错误后如无特殊指示通常告知一些适当信息,然后立即停止程序的执行。当然,为阻止这类错误的出现,程序设计者可在程序中编入一些由自己来检查这类错误的程序段,这可能更适合于自己的处理要求。第四类,逻辑性错误。这类错误是在编译期、连接期和运行期都不能发现的错误。如程序中把log写成了log10,把x+y写成了x-y等。显然编译系统是无法查出这类错误的。第五类,警告性

3、错误。这类错误是指编译系统在编译阶段发现程序中有一些可疑的或含混不清的地方,如源程序中发现了一个定义过但从未使用过的变量。这类情况从语法上讲是正确的,因此一般不会停止编译,在大多数情况下不会阻止目标程序与可执行程序的生成、连接和运行。但是对这类错误不应掉以轻心,应仔细检查程序,这往往存在着某种潜在的运行期错误。排错是非常困难的,有可能花费很长的时间。程序设计的目标应该是避免出现太多的问题。对减少排错能有所帮助的技术包括:好的设计、好的风格、边界条件测试、合理性检查、限制全局数据等等。一、第一类错误分析1在用scanf函数

4、给普通变量输入数据时,在变量名前漏写地址运算符&。如:scanf(″%d%d″,x,y);2在scanf函数调用语句中,企图规定输入实型数据的小数位。如执行以下语句:scanf(″%6.2f″,&a);3输入数据时的数据形式与要求不符。用scanf函数输入数据时,必须注意要与scanf语句中的对应形式匹配。如:scanf(″%d,%d″,&x,&y);若按以下形式输入数据:24是不合法。数据2和4之间应当有逗号。4输入、输出时的数据类型与所用格式说明符不匹配。例如有以下说明语句:intx=1;floaty=2.5;则运行

5、时执行语句printf(″x=%f,y=%d″,x,y);将给出与原意不符的结果:(在TURBOC2.0下运行)5混淆"="和"=="。在C语言中,"="赋值运算符,"=="是关系运算符。6在不该出现分号的地方加了分号。例如:if(x>y);printf(″xislargerthany.″);7对于复合语句,忘记加花括号。例如:i=1;a=0;while(i<=10)a+=i;i++;printf(″a=%d″,a);8误把数组说明时所定义的元素个数作为最大下标值使用。C语言规定,引用数组元素时下标从0开始,

6、即下标值的下限为0,而下标的上限值是数组定义时元素个数减1。9在switch语句的各分支中未使用break语句。例如:switch(grade){case′A′:printf(″85100″);case′B′:printf(″7084″);case′C′:printf(″6069″);case′D′:printf(″<60″);default:printf(″Error″);10混淆break语句和continue语句的作用。例如:do{scanf(″%d″,&x);if(x>0)break;prin

7、tf(″%d″,x);}while(x!=0);11使用++或--运算符时易犯的错误。如:main(){inta[5]={1,2,3,4,5},*p;p=a;printf(″%d″,*(p++));12误解形参值的变化会影响实参的值。例如:main(){inta=1,b=3;swap(a,b);printf(″a=%d,b=%d″,a,b);swap(x,y)intx,y;{intm;m=x;x=y;y=m;原意想通过调用swap函数使a与b的值对换,然而,从输出结果可知a和b的值并未进行交换。二、第二类错误

8、分析1在使用变量前未定义。例如:main(){a=1;b=2;printf(″%d″,a+b);2语句后面漏写分号或不该加分号的地方加了分号。C语言规定,语句必须以分号结束,分号是C语句不可缺少的一部分,这也是和其它高级语言不同的一点。初学者往往容易忽略这个分号。如:x=1y=2;又如在复合语句中漏写最后一个语句

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。