C语言常见错误分析续

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中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值