C语言编程常见错误.doc
文本预览下载声明
C 语言编程常见错误
2008-12-08 12:49
1. 书写标识符时,忽略了大小写字母的区别。?????? int main( void )?????? {?????????? int a = 5;?????????? printf( %d, A );
?????????? return 0;?????? }编译器认为 a 和 A 是两个不同的变量名,而显示出错信息。C 语言规定大写字母和小写字母是不同的字符;而有些编程语言是不分大小写的。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2. 忽略了变量的类型,进行了不合法的运算。?????? int main( void )?????? {?????????? float a, b;?????????? printf( %d, a % b );
?????????? return 0;?????? }% 是求余运算符,a % b 的结果是 a 除以 b 的余数。只有 % 左右两边的操作数都是整型时,才可以进行求余运算。故而上面的程序是错误的,因为 a 和 b 是浮点型变量。
3. 将字符常量与字符串常量混淆。?????? char c;?????? c = a;这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C 语言规定以 \0 作字符串常量的结束标志,它是由系统自动加上的,所以 a 实际上包含两个字符:a 和 \0。所以把 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,有些编译器会给出警告。
5. 忘记加分号。??? 分号是 C 语句中不可缺少的一部分,语句末尾必须有分号。??????? a = 1??????? b = 2;编译时,编译器发现“a = 1”后面没有分号,就会报错。改错时,如果在编译器所说的有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
6. 多加分号。??????? {??????????? z = x + y;??????????? t = z / 100;??????????? printf( %f, t );??????? };上面代码中,大括号 } 后面的分号(;)是毫无必要的!因为单独一个 ; 也是合法的 C 语言语句,所以 } 后面写了 ; 也是合法的,但是毫无必要!又如:??????? 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 次后,下面的程序块才开始执行,导致的结果是只能输入一个数并输出它。
7. 使用 scanf 函数时忘记加取址运算符“”。?????? int a, b;?????? scanf( %d %d, a, b );这样写是错误的!应该改成 scanf( %d %d, a, b );
8. 输入数据的方式与要求不符。?????? scanf( %d %d, a, b );??? 输入时,不能用逗号作两个数据间的分隔符。例如:3, 4 。而要使用空格、回车或者 tab 键作为分隔符。例如:3 4 。如果我们想用逗号(,)来做分隔符,可以这样写:?????? scanf( %d,%d, a, b );此时不用逗号而用空格或其它字符是不对的。例如:3:4 。又如:?????? scanf(a=%d,b=%d,a,b);输入应如以下形式:?????? a=3,b=4
9.
显示全部