初学c语言常见错误

来源:互联网 发布:88lezy现在的域名是 编辑:程序博客网 时间:2024/06/16 13:42

(1)忘记定义变量

例如:

int main()

{

x = 3;

y = 6;

printf("%d\n", x + y);

}

c语言要求对程序中用到的每一个变量都要定义其类型,上面程序中没有对x,y进行定义,应该在函数的开头加上int x,y;


(2)输入输出的数据类型与我们输入输出的格式不一样

例如:

int a = 10;

float b = 4.5;

printf("%f, %d\n", a, b);

这显然是错误的


(3)未注意int和short数据的数值范围 (-2^15~2^15-1)

举例:

int a = 89034;

printf(”%d\n“, a);

此时a的值已经超出了整形的范围,打印出来的值是错误的,对于超过范围的数要用long型

printf(”%ld\n“, a);


(4)在使用scanf函数时,忘记用取址符&

举例:

scanf(”%d%d“,a,b);

这是个很常见的错误,没有加取址符应该为

scanf(”%d%d“,&a, &b);

还要注意的是scanf函数里不用”\n“结尾

scanf(”%d%d\n“, a, b);

这是错误的,要去掉\n


(5)输入数据的形式与要求不符

scanf(”%d%d“, &a, &b);

有人按照这种方法输入:
6,8 中间用逗号分开的这是错误的

这种数据应该用回车来输入。


scanf(“%d,%d”, &a, &b);

这种输入时才采用加逗号的形式

6,8


(6)用scanf函数输入数据时,在数组名前加了取址符&

例如:

char a[20];

scanf("%s", &a);

这种写法是错误的,在对变量输入数据时应该加&,意思是把数据传到这个地址去,而数组名a本身就是地址,再加&就是多余了。


(7)用scanf函数向数值型数组输入数据时,用数值型数组名

例如:

int a[20];

scanf("%s", a);

这是错误的,正确的如下:

int a[20] = {0};for(int i = 0; i < 20; i++){scanf("%d",&a[i]);}

(8)语句后面没加分号

例如:

a = 3

b = 4;

系统在检查到第二行时会报错,但是是第一行的结尾没有加分号导致的,很不好发现


(9)在不该加分号的地方加了分号

例如:

if(a  > b);

printf("a 比b 大\n");


由于在(a > b)后面多加了一个分号,前后没有关联性,函数都会答应”a比b大“,失去了它原本的判断的意义。


(10)容易混淆”=“ 和”==“

注意这是两个不同的运算符”=“是赋值运算符,把右边的值赋给左边,是一个值拷贝的过程,”==“是关系运算符,用来判断两个表达式是否相等。


(11)括号不配对

在一个程序中存在多个括号时容易出现这种错误,在建立括号时,我们最好一次把左右括号打全,避免出现错误。


(12)在使用标识符时,混淆了大写字母和小写字母的区别

例如:

int main()

{

int A, B, C ;

a  = 2;

b = 3;

c  = a +b;

printf("%d\n", a , b, c);

}

本题定义了大写字母,使用时用了小写字母,系统把大小写看做两个不同的变量,认为小写字母未经定义使用出错。





0 0