C语言编程易犯毛病集合

C语言编程易犯毛病集合,第1张

C语言编程易犯毛病集合,第2张

c的特点是功能强大,使用方便灵活。编译后的C程序在语法检查上没有其他高级语言那么严格,这就给程序员留下了“灵活性”,但是这种灵活性还是给程序的调试带来了很多不便,尤其是对于C语言的初学者来说,经常会犯一些连自己错误在哪里都不知道的错误。

1.在编写标识符时,大写字母和小写字母之间的差异被忽略。

main()
{
int a = 5;
printf('%d ',a);
}
编译器将A和A视为两个不同的变量名,并显示一条错误信息。大写字母和小写字母是两个不同的字符。传统上,符号常量名大写,变量名小写,以增加可读性。

2.忽略变量的类型,进行非法操作。

main()
{
float a,b;
printf('%d ',a % b);
}
%是求A/B的整数余数的余数运算,整数变量A和B可以求补,实数变量不允许求补。

3.混淆字符常量和字符串常量。

char c;
c = ' a ';
在这里,字符常量与字符串常量混淆了。字符常量是用一对单引号括起来的单个字符,字符串常量是用一对双引号括起来的字符序列。c规定以“/”作为字符串的结束符号,由系统自动添加。因此,字符串“a”实际上包含两个字符:“a”和“/”,但不可能将其赋给字符变量。

4.忽略“=”和“= =”的区别。

在许多高级语言中,符号“=”被用作关系运算符“等于”。比如在basic程序中可以写
if (a=3) then …
,但是在C语言中,“=”是赋值运算符,“= =”是关系运算符。例如
if(a = = 3)a = b;
前者是比较A是否等于3,后者是指如果A和3相等,就给A赋值B,因为习惯的原因,初学者经常会犯这样的错误。

5.忘了奖金标志吧。

分号是C语句不可或缺的一部分,语句末尾必须有分号。
a=1
b=2
编译时,编译器没有找到“a=1”后面的分号,于是将下一行“b=2”作为前一行语句的一部分,这样会导致语法错误。改错时,有时被指出错误的那一行没有发现错误,就要看前面一行是否漏了分号。
{ z = x+y;
t = z/100;
printf('%f ',t);
}
对于复合语句,最后一个语句中的最后一个分号是不能忽略的(这个和pascal不一样)。

6.给加分。

对于一个复合语句,如:
{ z=x+y;
t=z/100;
printf('%f',t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
又如:
if (a%3==0);
i++;
本是如果3整除a,则i加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行i++语句,不论3是否整除a,i都将自动加1。
再如:
for (i=0;i

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C语言编程易犯毛病集合

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情