7.语句后面漏分号。C语言规定语句末尾必须有分号。分号是C语句不可缺少的一部分,这也是和其他语言不同的。有的初学者往往忘记写这一分号,例如:
a=3
b=4
编译时,编译系统在“a=3”后面未发现分号,就把下一行”b=4“也作为上一行的语句的一部分,这就出现语法错误。有时编译时指出某行有错,但在该行上未发现错误,应该检查上一行是否漏了一个分号。
8.在不该加分号的地方加了分号。例如:
if(a>b);
printf(“a is larger than b\n”);
本意为当a>b时输出"a is larger than b"的信息。但由于在if(a>b)后加了分号,因此if语句到此结束。即当a>b为真时,执行一个空语句。本来想a<=b时不输出上述信息,但现在printf函数语句并不从属if语句,而是与if语句平行的语句。不论a>b还是a<=b,都输出“a is large than b"。
9.括号不配对。但一个语句中使用多层括号时常出现这类错误,所以在打括号时,最好打一对。
10.在使用标识符时,忘记大写字母和小写字母的区别。如:
void main()
{
int a,b,c;
a=3;b=3;
C=A+B;
printf("%d+%d=%d",A,B,C);
}编译时出错。编译程序把a和A认作两个不同的变量名处理。
11.引用数组时误用了圆括号。例如:
void main()
{
int i,a[10];
for(i=0;i<10;i++)
scanf("%d",&a(i));
}
C语言中对数组的定义或引用数组元素时必须用方括号。
12.在定义数组时,将定义的”元素个数“误认为”可使用的最大下标值“。
例如:
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=0;i<=10;i++)
printf("%d",a[i]);
}
想输出a[1]到a[10]。这是初学时易犯的错误。C语言规定定义时用a[10],表示a数组有10个元素,而不是可以用的最大值下标为10.数组只包括a[0]到a[9]这10个元素,因此用a[10]就超出a数组的范围了。
14.混淆字符数组与字符指针的区别。例如:
void main()
{char str[4];
str=“Computer and c”;
printf("%s\n",str);
}
编译出错,str是数组名,代表数组首地址。在编译时对str数组分配一段内存单元,因此在程序运行期间str是一个常量,不能再被赋值。所以,str="Computer and c"是错的。如果把”char str[4];"改成“char *str;"则程序正确。此时str是指向字符数组的指针变量,str=“Computer and c"是合法的,它将字符串的首地址赋给指针str,然后在printf函数语句中输出字符串"Computer and c”。
15.混淆字符与字符串的表示形式。例如:
char sex;
sex=“M”;
…
sex是字符变量,只能存放一个字符。而字符常量的形式是用单撇号括起来的,应改为 sex=‘M’;
"M"是用双撇号括起来的字符串,它包括两个字符:’M‘和’\0’,无法存放到字符变量sex中。
C语言常见错误分析续
最新推荐文章于 2022-02-20 18:40:24 发布