C语言常见错误及提示

  • 格式:doc
  • 大小:60.00 KB
  • 文档页数:9

下载文档原格式

  / 25
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言常见错误分析

注意:本文中所列举的错误,给出的只是错误的名称和类型以及错误提示,没有给出对应的改正方法,请有兴趣的同学们根据具体情况自行修改、编译、执行,如果在编程中出现类似错误,能够快速定位错误并解决。

一、错误分类

语法错

逻辑错

运行错

二、常见错误及提示

1. 变量未定义,C语言的变量一定要先定义才能使用;

#include

void main()

{

x=3; y=6;

printf(“%d\n”,x+y);

}

错误类型:语法错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : error C2065: 'x' : undeclared identifier

D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : error C2065: 'y' : undeclared identifier

2. 输入输出的数据的类型与所用格式说明符不一致

int a=3;float b=4.5;printf(“%f%d\n”,a,b);

错误类型:逻辑错

它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)

错误提示:无

3. 未注意int型数据的数值范围

short int型数据的数值范围(-32768~32768)

short int num=89101;

printf(“%d”,num);

会将超过低16位的数截去从而得到23563

错误类型:逻辑错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : warning C4305: 'initializing' : truncation from 'const int' to 'short'

D:\WorkSpace\C++WorkSpace\测试\test.cpp(4) : warning C4309: 'initializing' : truncation of constant value

注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误

4. 输入变量时忘记使用地址符&

scanf(“%d%d”,a,b);

错误类型:语法错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : warning C4700: local variable 'b' used without having been initialized

D:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : warning C4700: local variable 'a' used without having been initialized

5. 输入时数据的组织与要求不符

对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入

scanf(“%d, %d”, &a, &b);

应当输入:5, 6 否则程序不能正常读入数据

错误类型:运行错

错误提示:无

6. 误把”=“作为”等于”比较符

“=“为附值运算符

“==“为比较运算符

错误类型:逻辑错

错误提示:无

7. 语句后面漏分号

{

t=a;

a=b;

b=t

}

它是pascal的语法

错误类型:语法错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(9) : error C2143: syntax error : missing ';' before '}'

8. 不该加分号的地方加了分号

if(a>b);

printf(“a is larger than b\n”);

for(i=0;i<10;i++);

{

scanf(“%d”,&x);

printf(“%d\n”,x*x);

}

错误类型:语法错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(6) : warning C4390: ';' : empty controlled statement found; is this the intent?

9. 对应该有花括弧的复合语句,忘记加花括弧

sum=0;

i=1;

while(i<=100)

sum=sum+1;

i++;

由于i始终为1,while循环无法正常退出。

错误类型:逻辑错

错误提示:无

10. 括弧不配对

while((c=getchar()!=‘#’)

putchar(c);

错误类型:语法错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(5) : error C2143: syntax error : missing ')' before ';'

11. 在用标识时,忘记了大写字母和小写字母的区别

{

int a,b,c;

a=2;

b=3;

C=A+B;

printf(“%d+%d=%D”,A,B,C);

}

错误类型:语法错

错误提示:

D:\WorkSpace\C++WorkSpace\测试\test.cpp(7) : error C2065: 'C' : undeclared identifier

D:\WorkSpace\C++WorkSpace\测试\test.cpp(7) : error C2065: 'A' : undeclared identifier

D:\WorkSpace\C++WorkSpace\测试\test.cpp(7) : error C2065: 'B' : undeclared identifier

12. 引用数组元素时误用发圆括弧

{