1 / 27
文档名称:

常见错误类型和程序调试.ppt

格式:ppt   页数:27页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

常见错误类型和程序调试.ppt

上传人:ranfand 2016/5/7 文件大小:0 KB

下载得到文件列表

常见错误类型和程序调试.ppt

相关文档

文档介绍

文档介绍:常见错误和程序调试 1 常见错误分析 2 程序调试?要真正学好 C、用好 C并不容易, “灵活”固然是好事,但也使人难以掌握,尤其是初学者往往出了错还不知怎么回事。?C编译程序对语法的检查不如其他高级语言那样严格(这是为了给程序人员留下“灵活”的余地)。因此, 往往要由程序设计者自己设法保证程序的正确性。需要不断积累经验,提高程序设计和调试程序的水平。 常见错误分析?下面将初学者在学****和使用 C语言(不包括 C++) 时容易犯的错误列举出来,以起提醒的作用。这些内容在以前各章中大多已谈到,为便于查阅,在本章中集中列举,供初学者参考,以此为鉴。?(1) 忘记定义变量。如: main( ) { x=3; y=6; printf("%d\n ", x+y); } ?(2) 输入输出的数据的类型与所用格式说明符不一致。?例如,若 a已定义为整型, b已定义为实型。 a=3;b=; printf("%f %d\n" ,a, b); ?编译时不给出出错信息,但运行结果将与原意不符,输出为? 16402 (3) 未注意 int 型数据的数值范围。?一般微型计算机上使用的 C编译系统,对一个整型数据分配两个字节。因此一个整数的范围为-2 15~2 15 -1,即-32768 ~32767 。常见这样的程序段: int num; num=89101; printf("%d" , num); ?得到的却是 23565 ,原因是 89101 已超过 32767 。两个字节容纳不下 89101 ,则将高位截去。 printf("%ld" , num); 请注意,如果只定义 num 为 long 型,而在输出时仍用“%d ”说明符,仍会出现以上错误。对于超过整个范围的数,要用 long 型,即改为 long int num; num=89101; ?(4) 输入变量时忘记使用地址符。如: ? scanf("%d%d" ,a, b); ?C语言要求指明“向哪个地址标识的单元送值”。应写成 scanf("%d%d" , &a , &b); ?(5) 输入时数据的组织与要求不符。?用 scanf 函数输入数据,应注意如何组织输入数据。在 scanf 输入时,除了格式控制符以外的其他字符必须按原样输入。 假如有以下 scanf 函数: ? scanf("%d%d" , &a , &b); ?有人按下面的方法输入数据: ?3,4?应该用以下方法输入: ?3 4 ?如果 scanf 函数为 scanf("%d , %d" , &a , &b); ?应按以下方法输入: ?3,4?此时如果用“34”反而错了。?(6) 误把“=”作为“等于”比较符。?在C语言中, “=”是赋值运算符, “== ”才是关系运算符“等于”。如果写成? if(a=b) printf("a equal to b"); ?C编译系统将(a=b) 作为赋值表达式处理,将 b的值赋给 a,然后判断 a的值是否零,若为非零,则作为“真”;若为零作为假。?如果 a的值为 3,b的值为 4,a≠b,按原意不应输出“ ae q u a lt ob ”。而现在输出“ ae q u a lt o b ”。?这种错误在编译时是检查不出来的,但运行结果往往是错的。而且由于****惯的影响,程序设计者自己往往也不易发觉。(7) 语句后面漏分号。?C语言规定语句末尾必须有分号。分号是 C语句不可缺少的一部分。这也是和其他语言不同的。有的初学者往往忘记写这一分号。如: ? a=3 ? b=4 ?编译时,编译程序在“ a=3 ”后面未发现分号,就把下一行“ b=4 ”也作为上一行的语句的一部分,这就出现语法错误。如果用复合语句,漏写最后一个语句的分号,如: { t=a; a=b; b=t }