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);
}
正确
例子:
#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);
}
正确
相关文章推荐
- C语言编程中的常见错误总结
- c语言中常见错误总结
- C语言常见的内存错误总结
- C++常见错误 - 总结2
- make的常见错误信息(总结中)
- 【经验】C语言编程最常见的15个错误【写给粗心的同学】
- 总结系列_11(Andriod常见错误总结,续...)
- C++常见编译错误分析总结
- 常见的C语言内存错误及对策
- java的常见异常与错误总结
- MySQL数据库常见错误与解决方法总结
- ssh开发常见错误总结(转)
- SQL Server 2008 R2 常见错误总结
- 【C语言】常见错误
- Python Pandas库 常见使用错误总结
- 常见错误总结
- c语言常见错误说明
- C++中常见的错误 (总结)
- C语言初学者代码中的常见错误与瑕疵(21)
- symbian 开发常见错误代码及原因总结