现在的位置: 首页 > 综合 > 正文

C语言常见错误总结

2013年11月11日 ⁄ 综合 ⁄ 共 1389字 ⁄ 字号 评论关闭

(1)数据的数值范围

 

例子:

#include <stdio.h>

main()

{

  char x;

  x=500;

  printf("%c/n", x);

}

 

错了:越界了,char占一个字节,数值范围为:-128~127   如是500,它会将500转换为2进制,在赋给x时,将低八位给x,后面的截去

 

--------------------------------------------------------------------

 

(2)注意输入格式要一致

 

例子:

scanf("a=%d,b=%d", &a, &b);

C规定:如在格式控制字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这些字符相同的字符。

输入应如下:a=3,b=4

 

例子:

scanf("%c%c%c", &c1,&c2,&c3);

 

如输入:a b c

字符a赋给c1,空格赋给c2,b赋给c3                        注:在用%c格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入

---------------------------------------------------------------------

 

(3)switch漏写break

 

如:

switch(1)

{

  case '1':printf("%d/n", a);break;

  case '2':printf("%d/n", b);break;

  ........

  default:printf("error/n");

}

case只起标号作用,而不起判断作用,如不加break会一直从满足条件的地方向下一直执行

 

----------------------------------------------------------------------

 

(4)定义数组时用变量

例子:

int n;

scanf("%d", &n);

int a[n];

 

错了,C不允许对数组的大小作动态的定义

 

-----------------------------------------------------------------------

 

(5)字符数组,字符指针

例子:

main()

{

  char str[10];

  str="china";

  printf("%s/n", str);

}

错了,因为str[10]  是一个数组,str代表数组名,是一个常量,不 能被赋值

 

应将str改为指针变量。

正确:

main()

{

  char *str;

  str="china";

  printf("%s/n",str);

}

 

注意:数组赋值时只能初始化时赋值或者一个一个的赋值

如:char  str[10] = "china";或者:char str[10]; str[0]='c',str[1]='h',str[2]='i',....str[6]='/0';

 

---------------------------------------------------------------

 (6)在引用指针变量之前没有对它赋值

 

main()

{

  char *p;

  scanf("%s", p);

}

错了,没有给指针变量赋值就使用它,p的值不确定,有可能误指向有用的存储空间

应改为:

main()

{

  char *p,str[20];

  p=str;

  scanf("%s", p);

}

正确 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.