您的位置:首页 > 编程语言 > C语言/C++

C语言常见错误总结

2009-10-22 08:55 375 查看
(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
;

错了,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);

}

正确
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: