C语言初学者经常会犯的一些错误
拼写问题
对于C初学者来说,拼写问题出现的比较多。请各位读者找出下面的代码片段的错误。
#inculde <stdio.h>
#define a b
int mian(){
//...
return 0;
}
首先我们很容易会发现inculde
这个问题。其次,主函数main(){}
这一段也不正确,经常会由于汉语拼音习惯打成mian
函数。
if while等带有循环体或执行体的语句执行情况问题
例如下面2个例子:
...
if(i<=0);
fun(x);
...
...
int i,b=1;
for (i=0;i<1000;i++);
b++;
...
乍一看这2段代码没有什么问题,不过第一段代码运行起来却不管i<=0
还是i>0
,程序总是执行fun(x)
函数,而第二段代码的b
输出却总是1
。
C语言的编译器mingw的gcc有一个大坑就是不会提示没有执行体,像是上面的代码完全可以编译通过。
这种的避免方式最好是在每一个if
和while
等后面都加上{}
以避免循环体的问题。
例如像下列代码:
...
if (i<=5){
i++;
}
...
计算表达式的问题
请读者找出下列代码错误。(其中包含的变量已经定义并初始化)
...
i=[3+(i-j)+2k];
...
C语言毕竟不是数学,我们现阶段学习用到中括号仅仅在数组里有:
int i[15];
但是却还是有人将C语言的表达式和数学混为一谈,错误地使用中括号。
而且,还有一个致命错误是2k
的出现。C语言不允许数字和变量之间没有运算符号。数学里常用的乘法书写法则在C语言里不适用。
代码修改:
...
i=(3+(i-j)+2*k);
...
scanf的取地址问题
请读者找出下方代码错误。
...
scanf("%d",i);
return 0;
...
如果这个程序用codeblocks编译并运行,输入数值回车后会出现这种情况:
而正常情况下是这样的:
返回值不为0。
除此之外,有时候还会出现程序出错提示框。
i=0和i==0问题
请读者找出下面代码的错误。
...
int i=0,j=3;
if(i=0){
j++;
}
printf("%d %d",i,j);
...
执行后发现i
为0
,j
为3
,完全达不到目的。
C语言初学者经常会被这些=
,==
等运算符搞得焦头烂额,以至于i=0
是给i
赋值0
而i==0
才是等于号都忘记了。
修改后的代码:
...
int i=0,j=3;
if(i==0){
j++;
}
printf("%d %d",i,j);
...
执行结果:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soloopooo的小窝!