C语言常见错误及提示
- 格式:doc
- 大小:60.00 KB
- 文档页数:9
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. 引用数组元素时误用发圆括弧
{