c语言常见错误分析

c语言常见错误分析

ID:12321982

大小:37.00 KB

页数:3页

时间:2018-07-16

c语言常见错误分析_第1页
c语言常见错误分析_第2页
c语言常见错误分析_第3页
资源描述:

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

1、C语言常见错误分析1、书写标识符时,忽略了大小写字母的区别C语言认为大写字母和小写字母是两个不同的字符,如在编译程序过程中,系统会把a和A看做是两个不同的变量名。习惯上,符号常量名用大写表示,变量名用小写表示,以增加程序的可读性。2、忽略了变量的类型,进行了不合法的运算main(){floata=3.4,b=0.4;printf(“%d”,a%b);}%是求余运算符,得到a/b的余数。整形变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。3、将字符常量与字符串常量混淆charc;c=”a”;这里就是混淆了字符常量和字符串常量,字符常量是由

2、一对单引号括起来的单个字符,字符串常量是由一对双引号括起来的字符序列。4、忽略了“=”与“==”的区别C语言中,“=”是赋值运算符,“==”是关系运算符。例如:if(a==3)a=b;前者是进行比较运算,a是否和3相等;后者表示如果a和3相等,把b的值赋给变量a。由于习惯问题,我们往往会犯这样的错误:if(a=3)a=b;结果a总是等于b的值,原因是条件a=3是给a赋值3,判断条件非0,总是执行a=b。5、忘记加分号或多加分号考试过程中应特别注意这种情况,分号是C语句中不可缺少的一部分,语句末尾必须有分号,但也不能乱加。例如:#include

3、o.h>floatfun(intn){}main(){intn;floats;printf(“PleaseenterN:”);scanf(“%d”,&n);s=fun(n);printf(“theresultis:%f”,s);}这是一个函数调用,在函数首部floatfun(intn)后是没有分号的。少加或多加分号系统在编译时都会报错。还有一种情况在系统编译时并不会报错,但是程序的执行顺序被改变了,如:if(a%3==0);i++;本意是如果3整除a,则i加1,但由于if(a%3==0)后多加了分号,即if语句后为空语句,程序将无条件执行i++

4、语句,不论3是否整除a,i都将自动加1。6、输入变量时忘记加地址运算符“&”或在不应加“&”的位置加了地址运算符(1)忘记加“&”的情况,如:inta,b;scanf(“%d%d”,a,b);此时,无法正确给a和b读入数据。scanf函数的作用是:按照a、b在内存中所分配的地址将a、b的值存进去。“&a”指a在内存中的地址,因此正确的读写格式为scanf(“%d%d”,&a,&b);(2)多加“&”的情况。如:intstr[];scanf(“%s”,&str);C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,scanf函数中的输入项是字符数

5、组名,因此不必再加地址运算符“&”。7、输入数据的方式与要求格式不符例如:scanf(“%d,%d”,&a,&b);C语言规定:如果在“格式控制”字符串中,除了格式说明以外还有其他字符,则在输入数据时应输入相同的字符。下面输入是合法的:3,4此时若不用逗号而用空格或其他字符是不对的,如:34(中间为空格)3:4中间为冒号8、输入字符的格式与要求不一致在用“%c”格式输入字符时,“空格字符”和“转义字符”都将作为有效字符输入。例如:scanf(“%c%c%c”,&c1,&c2,&c3);如输入:abc字符‘a’送给了c1,

6、字符‘’(空格)送给了c2,字符‘b’送给了c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。9、输入输出的数据类型与所用格式说明符不一致例如:a定义为整型,b定义为实型。inta=3;floatb=4.5;printf(“%f%d”,a,b);编译时不给出错信息提示,但运行结果将与意愿不符,这种错误尤其需要注意。10、输入数据时,企图规定精度scanf(“%7.2f”,&a);上述语句是不合法的,输入数据时不能规定精度。11、switch语句中漏写break语句例如:根据考试成绩的等级打印出百分制分数段switch(grade

7、){case‘A’:printf(“85~100”);case‘B’:printf(“70~84”);case‘C’:printf(“60~69”);case‘D’:printf(“<60”);default:printf(“error”);}由于漏写了break语句,case只起标号的作用,而不起判断的作用。因此,当grade值为A时,printf函数在执行完第一个printf语句后接着执行后面的printf函数语句。正确的写法应在每个分支后加上break,应改为:switch(grade){case‘A’:printf(“85~

8、100”);break;case‘B’:printf(“70~84”);break;c

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

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

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