C语言编程常见错误.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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.

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档