(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);
}
正确