上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
C语言十八种常见错误
作者:未知 申领版权
2010年12月12日 共有 1450 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    
    

C语言十八种常见错误

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()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。
    
    7.输入变量时忘记加地址运算符“&”。
    
    int a,b;
    scanf("%d%d",a,b);
    
    这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。
    
    8.输入数据的方式与要求不符。
    
    ①scanf("%d%d",&a,&b);
    
    输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
    
    3,4
    
    输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
    
    ②scanf("%d,%d",&a,&b);
    
    C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:
    
    3,4
    
    此时不用逗号而用空格或其它字符是不对的。
    
    3 4 3:4
    
    又如:
    
    scanf("a=%d,b=%d",&a,&b);
    
    输入应如以下形式:
    
    a=3,b=4 
    
    

 

相关新闻

Excel图表创建步骤
常见气体制备装置归纳
常见离子和物质的检验
常见气体的检验
常见物质的分离、提纯和鉴别
常见物质的颜色、状态
常见物质的学名、俗名及化学式
化学常见物质的颜色
常见课型教案编写的要点
有机反应的主要类型

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》