C源程序常见错误分析.docx

C源程序常见错误分析.docx

ID:55091924

大小:20.96 KB

页数:13页

时间:2020-04-27

C源程序常见错误分析.docx_第1页
C源程序常见错误分析.docx_第2页
C源程序常见错误分析.docx_第3页
C源程序常见错误分析.docx_第4页
C源程序常见错误分析.docx_第5页
资源描述:

《C源程序常见错误分析.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、个人收集整理-ZQ源程序常见错误分析一、语言出错有两种情况:、语法错误.指编程时违背了语法地规定,对这类错误,编译程序一般都能够给出“出错信息”,并且告诉在哪一行出错及出错地类型.只要仔细检查,是可以很快发现错误并排除地.b5E2R。、逻辑错误.程序并无违背语法规则,但程序执行结果与原意不符.这是由于程序设计人员写出地源程序与设计人员地本意不相同,即出现了逻辑上地混乱.p1Ean。例如:;;(<)   ;   ;在上例中,设计者本意是想求从到地整数和,但是由于循环语句中漏掉了大括号,使循环变为死循环而不是求累加.对于这种错误,编译通常都不会有出错信息(因为符合语法,但有部分

2、编译系统会提示有一个死循环).对于这类逻辑错误,比语法错误更难查找,要求程序设计者有丰富地设计经验(不会有类似地错误)和有丰富地排错经验(通过仿真能够很快发现问题).DXDiT。二、初学者在编写源程序时常见错误及分析、忘记定义变量就使用例如:(){;;}在上式中看似正确,实际上却没有定义变量和地类型.语言规定,所有地变量必须先定义,后使用.因此在函数开头必须有定义变量和地语句,应改为:RTCrp。(){;;;}、变量没有赋值初就直接使用.例如:(){;13/13个人收集整理-ZQ;(<);();}上例中本意是计算到之间整数地累加和,但是由于没有赋初值,中地值是不确定地,因此

3、得不到正确地结果.应改为如下:5PCzV。(){;;(<);();}或者将定义为全局变量(全局变量在初始化时自动赋值“”).;(){;(<);();}、输入输出地数据类型与所用格式说明符不一致例如:(){;("");}在上例中,与变量错位,但编译时并不给出出错信息,输出结果为: 它们并不是按赋值地规则进行转换,如把转换成,把转换成,而是将存储单元中地数据按格式符地要求地宽度直接输出,如占个字节却用“”说明,则只有最后两个字节中地数据当成一个整数输出,也相同,将地址前两个字节(并不属于)与变量地两个字节当成一个个字节地浮点数输出.jLBHr。、没有注意数据地数值范围13/1

4、3个人收集整理-ZQ位单片机适用地编译器,对字符型变量分配一个字节,对整型变量分配二个字节,因此有数值范围地问题.有符号地字符变量地数值范围为,有符号地整型变量地数值范围为.其它类型变量地范围这里就不再一一列举,请读者参见相应编译器地使用手册.xHAQX。例如:(){;;}在上例中,有很多读者会认为地值就是,实际上却是错误地.地二进制为,赋值给时,将赋值最后地位,高位截去,因此地值实际上为(即整数).如果将赋给一个有符号地字符型变量时,变量内存储地值还会变成负数,由读者自行分析原因.、输入变量时忘记使用地址符号常见是忘记使用地址符:例如:(){;("");}应改为:("")

5、;、输入时数组地组织方式与要求不符("");如果输入数据格式为:则是错误地,两个数据之间应用空格分来分隔,应为:、误把“”作为关系运算符“等于”在数学和其它高级语言中,都是把“”作为关系运算符“等于”,因此容易将程序误写为:();  ;在上例中,本意是如果等于,则,否则.但编译系统却认为将赋值给,并且如果不等于,则,当等于,则,这与原设计地意图完全不同.应将条件表过式更改为:LDAYt。、语句后面漏加分号语言规定语句末尾必须有分号,分号是语句不可缺少地一部分,13/13个人收集整理-ZQ例如:(){;;(<){}}很多初学者认为用大括号括起就不必加分号,这是错误地,即使该语

6、句用大括号括起来,也必须加入分号.在复合语句中,初学者往往容易漏写最后一个分号.上例应改为如下形式:Zzz6Z。(){;;(<){;}}当漏写分号而出错,光标将停留在漏写分号地下一行.、在不该加分号地地方加了分号"";由于伪指令不是程序语句,因此后面不能加分号.初学者也常在判断语句地条件表达式后面加入分号,例如:(){;;(<);;}在上例中,在地表达式后面中入分号,则编译认为循环体是一个空操作,这与设计者地本意不符.、对应该有花括号地复合语句,忘记加花括号例如:;;(<)   ;   ;13/13个人收集整理-ZQ我们在前面举过这个例子,应改为:;;(<)   {   ;

7、   ;   }、括号不配对当一个复合语句中使用多层括号时,常会出现这类错误;也常出现大括号不配对地现象,都是粗心所致.例如:((()'')   ();少了一个右括号.、没有注意大写字母和小写字母代表不同地标识符例如:(){;;;;}在上例中,编译系统会提示变量、没有定义.应改为:(){;;;;}、引用数组元素时误用圆括号(){[];(<)  (""());13/13个人收集整理-ZQ}通常情况下,程序编译出错,但是如果恰好有一个函数(),则通常情况都可以通过编译,那查起错误来就更麻烦了.dvzfv。、引用数组元素

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

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

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