文档详情

C语言常见错误与分析.docx

发布:2024-03-10约2.37千字共4页下载文档
文本预览下载声明

C语言常见错误与分析

错误分类

语法错

逻辑错

运行错

忘记定义变量

main()

{ x=3;y=6;

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

}

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

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

inta=3;floatb=4.5;

printf(%f%d\n,a,b);

这时不会按赋值的规则进行转换(如把4.5转换为4)再输出,而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)。所以会输出错误的结果。

未注意数据类型的数值范围

在一些编译系统中int类型等同于shortint,范围是-32768~32767。

intnum=89101;printf(%d,num);

上面的代码会将超过低16位的数截去,从而得到23563。

注意:在一些系统中若定义了long型,而在输出时仍用“%d”说明符,仍会出现以上错误。

输入变量的语句中时忘记使用地址符

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

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

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

误把赋值号“=”作为“等于”比较符“=” 为赋值运算符

“==” 为关系运算中的“相等”

语句后面漏分号

{t=a;a=b;b=t

}

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

if(ab);

printf(aislargerthanb\n);for(i=0;i10;i++);

{

scanf(%d,x);

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

}

复合语句漏写花括弧

sum=0;i=1;

while(i=100)sum=sum+1;i++;

括弧不配对

while((c=getchar()!=#)putchar(c);

使用标识时,没有区分大写字母和小写字母

inta,b,c;a=2;b=3;C=A+B;

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

引用数组元素时,误用圆括号(因为有一些编程语言用圆括号表示下标,故某些人有此习惯)

inti,a(10);

for(i=0;i10;i++)scanf(%d,a(i));

定义数组时,将定义的元素个数误认为是可使用的最大下标值(这也是其他编程语言带来的习惯)

inta[10]={1,2,3,4,5,6,7,8,9,10};

inti;for(i=1;i=10;i++)printf(%d,a[i]);

对二维或多维数组的定义和引用的方法不对

inta[5,4];

printf(%d,a[1+2,2+2]);

误以为数组名代表数组中全部元素

inta[4]={1,2,3,4};

printf(%d%d%d%d,a);

混淆字符数组与字符指针的区别

charstr[40];str=Computerandc;printf(%s\n,str);

在引用指针变量之前没有对它赋予确定的值

char*p;scanf(%s,p);

switch语句的各分支中漏写break语句

混淆字符和字符串的表示形式

charsex;sex=M;

使用自加(++)和自减(--)运算符错误

(2) char*p,c[20];

p=c;scanf(%s,p);

int*p,a[5]={1,3,5,7,9};

p=a;

printf(%d,*p++); //注意与*(++p)的区别;

被调函数的定义在调用语句之后,而在调用前未加说明

intmain()

{ floatx,y,z;

x=3.5;y=-7.6;

z=max(x,y);printf(%f,z);

}

floatmax(floatx,floaty)

{ return(xy?x:y);

}

误认为形参值的改变会影响实参的值

swap(intx,inty)

{ intt;t=x;x=y;y=t;

}

intmain()

{ inta,b;a=3;b=4;

swap(a,b);printf(%d,%d\n,a,b);

}

函数的实参和形参类型不一致

fun(floatx,floaty)

{

}

intmain()

{

inta=3,b=4;c=fun(a,b);

}

不同类型指针混用

inti=3,*p1;floata=1.5,*p2;p1=i;p2=a;p2=p1;

printf(%d,%d\n,*p1,*p2);

没有注意函数参数的求值顺序

inti=3;

printf(%d,%d,%d\n,i,++i,++i);

结果为5,5,4

因为C标准没有具体规定函数参数求值的顺序,VC++是采取自右至左的顺序求

显示全部
相似文档