1 / 27
文档名称:

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

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

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

分享

预览

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

上传人:柯 2020/12/26 文件大小:2.94 MB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:清华大字出版社
TSINGHUA UNIVERSITY PRESS
常见错误和程序调试
1常见错误分析
2程序调试
清华大学出版社
TSINGHUA UNIVERSITY PRESS
要真正学好C、用好C并不容易,“灵活”固然是
好事,但也使人难以掌握,尤其是初学者往往出
了错还不知怎么回事
·C编译程序对语法的检查不如其他高级语言那样
严格(这是为了给程序人员留下“灵活”的余地)
因此,往往要由程序设计者自己设法保证程序的
正确性。需要不断积累经验,提高程序设计和调
试程序的水平。
清华大学出版社
TSINGHUA UNIVERSITY PRESS

下面将初学者在学****和使用C语言(不包括C++)时
容易犯的错误列举出来,以起提醒的作用。这些
内容在以前各章中大多已谈到,为便于查阅,在
本章中集中列举,供初学者参考,以此为鉴。
(1)忘记定义变量。如:
main()
6
printf("%odn " x+y);
清华大学出版社
TSINGHUA UNIVERSITY PRESS
(2)输入输出的数据的类型与所用格式说明符不

例如,若a已定义为整型,b已定义为实型。
a=3;b=
printf("%f %odin", a, b);
编译时不给出出错信息,但运行结果将与原意不
符,输出为
·
清华大学出版社
TSINGHUA UNIVERSITY PRESS
(3)未注意int型数据的数值范围。
·一般微型计算机上使用的C编译系统,对一个整型
数据分配两个字节。因此一个整数的范围为
215~215-1,即-32768~32767。常见这样的程序段
Int num;
num=89101
printf("%d", num);
得到的却是23565,原因是89101已超过32767。两
个字节容纳不下89101,则将高位截去
清华大学出版社
TSINGHUA UNIVERSITY PRESS
对于超过整个范围的数,要用long型,即改为
ong int num
num=89101
printf("%old", num)
请注意,如果只定义num为long型,而在输出时仍
用“%d”说明符,仍会出现以上错误。
8901:[000000001100101
23565
0L0l**********
清华大学出版社
TSINGHUA UNIVERSITY PRESS
(4)输入变量时忘记使用地址符。如
scanf("%d%od", a, b);
C语言要求指明“向哪个地址标识的单元送值”
应写成sanf"%d%d",&a,&b);
·(5)输入时数据的组织与要求不符。
用 scanf函数输入数据,应注意如何组织输入数据。
在 scanf?输入时,除了格式控制符以外的其他字符
必须按原样输入。
清华大学出版社
TSINGHUA UNIVERSITY PRESS
假如有以下 scanf函数
scanf(%od %od",&a,&b);
有人按下面的方法输入数据:
应该用以下方法输入
如果scan函数为 scanfe("%d,%d",&a,&b);
应按以下方法输入:
此时如果用“34”反而错了。
清华大学出版社
TSINGHUA UNIVERSITY PRESS
(6)误把“=”作为“等于”比较符
在C语言中,“=”是赋值运算符,“==”才是关系
运算符“等于”。如果写成
if(a=b) printf("a equal to b);
C编译系统将(a=b)作为赋值表达式处理,将b的值
赋给a,然后判断a的值是否零,若为非零,则作
为“真”;若为零作为假。
如果a的值为3,b的值为4,a,按原意不应输出
“ ae q u a It ob”。而现在输出“ ae q u a It o b”。
这种错误在编译时是检査不出来的,但运行结果
往往是错的。而且由于****惯的影响,程序设计者
自己往往也不易发觉。
清华大学出版社
TSINGHUA UNIVERSITY PRESS
(7)语句后面漏分号
C语言规定语句末尾必须有分号。分号是C语句不
可缺少的一部分。这也是和其他语言不同的。有
的初学者往往忘记写这一分号。如:
a=3
b=4
编译时,编译程序在“a=3”后面未发现分号,就
把下一行“b=4”也作为上一行的语句的一部分,
这就出现语法错误。如果用复合语句,漏写最后
个语句的分号,如
It=a
a=b?
b=t