资源描述:
《C语言编程常见错误.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言编程常见错误2008-12-0812:491.书写标识符时,忽略了大小写字母的区别。 intmain(void) { inta=5; printf("%d",A); return0; }编译器认为a和A是两个不同的变量名,而显示出错信息。C语言规定大写字母和小写字母是不同的字符;而有些编程语言是不分大小写的。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行了不合法的运算。 intmain(void)
2、 { floata,b; printf("%d",a%b); return0; }%是求余运算符,a%b的结果是a除以b的余数。只有%左右两边的操作数都是整型时,才可以进行求余运算。故而上面的程序是错误的,因为a和b是浮点型变量。3.将字符常量与字符串常量混淆。 charc; c="a";这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C语言规定以 作字符串常量的结束标志,它是由系统自
3、动加上的,所以"a"实际上包含两个字符:'a'和' '。所以把"a"赋给字符变量是不行的。4.忽略了“=”与“==”的区别。 许多高级语言都使用“=”符号作为关系运算符的“等于”。如BASIC程序中可以写: if(a=3)then…但C语言中,“=”是赋值运算符,“==”才是关系运算符。如: if(a==3) a=b;a==3是比较a是否等于3;而a=b;表示把b的值赋给a。初学者往往会把a==3错写成a=3,这样写是符合语法的,但是不符合我们的期望。如果错写成了a=3,有些编译器会给出警
4、告。5.忘记加分号。 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 a=1 b=2;编译时,编译器发现“a=1”后面没有分号,就会报错。改错时,如果在编译器所说的有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。6.多加分号。 { z=x+y; t=z/100; printf("%f",t); };上面代码中,大括号}后面的分号(;)是毫无必要的!因为单独一个;也是合法的C语言语句,所以}后面写了;也是合法的,但
5、是毫无必要!又如: if(a%3==0); i++;程序员的本意是如果3整除a,则i加1。但由于if(a%3==0)后加了分号,则if语句到此结束。不论3是否整除a,程序都会执行i++;语句。再如: for(i=0;i<5;i++); { scanf("%d",&x); printf("%d",x); }程序员的本意是先后输入5个数,每输入一个数后再将它输出。但由于for()后加了一个分号,循环体变为空语句;。空语句;执行5次后,下
6、面的程序块才开始执行,导致的结果是只能输入一个数并输出它。7.使用scanf函数时忘记加取址运算符“&”。 inta,b; scanf("%d%d",a,b);这样写是错误的!应该改成scanf("%d%d",&a,&b);8.输入数据的方式与要求不符。 scanf("%d%d",&a,&b); 输入时,不能用逗号作两个数据间的分隔符。例如:3,4。而要使用空格、回车或者tab键作为分隔符。例如:34。如果我们想用逗号(,)来做分隔符,可以这样写: scanf("%d,%d",&a,&b);此时
7、不用逗号而用空格或其它字符是不对的。例如:3:4。又如: scanf("a=%d,b=%d",&a,&b);输入应如以下形式: a=3,b=49.输出的数据类型与所用格式说明符不一致。 例如,a定义为整型,b定义为浮点型 inta=3; floatb=4.5; printf("%f%d",a,b);编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。应该改成: printf("%d%f",a,b);10.输入数据时,企图规定精度。
8、scanf("%7.2f",&a);这样做是不合法的,输入数据时不能规定精度。11.switch语句中漏写break语句。 例如:根据考试成绩的等级打印出百分制数段。 swit