手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

C语言初学者的十八颗“地雷”

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
 C语言的最大特点是:功能强、使用方便灵活。C编译的程式对语法检查并不象其他高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程式的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程式,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。

  1.书写标识符时,忽略了大小写字母的区别。

main()
{
 int a=5;
 printf("%d",A);
}

  编译程式把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。

  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相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。

  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<5;I );
{scanf("%d",&x);
printf("%d",x);}


  本意是先后输入5个数,每输入一个数后再将他输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出他。



[1] [2] [3] 下一页

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS