初学C语言的人最容易犯的错误集锦(一)

来源:互联网 发布:mac 桌面壁纸放哪里 编辑:程序博客网 时间:2024/05/26 17:47
下面这些错误如果你不能一眼看出来,那么就需要非常注意这些细节了。这些错误虽然都很小,但是经常能让一个初学者郁闷好几天。我们将分析这些错误并给出避免出错的建议。
错误1
#include <stdio.h>
void main()
{
    int i;
    for (i=1;i<=200;i++)
       if(i%7==0) ;
      printf("%3d",i) ;
}
程序编写者的本意是打印所有能被7整除的数,但是每次运行的时候只会打印一个0,为啥呢?你看出来了吗??????????????????????if语言后多了分号!
这位同学本来是想在(i%7==0)等于true的时候执行printf语句的,但是分号是一段代码的终止标志,所以if只会执行空的代码体,所以
       if(i%7==0) ;
      printf("%3d",i) ;
    相当于:
       if(i%7==0)
       {
       };
      printf("%3d",i) ;   
可以看到printf根本没有被包含到if的大括号中。正确的代码应该是:
#include <stdio.h>
void main()
{
    int i;
    for (i=1;i<=200;i++)
       if(i%7==0)
      printf("%3d",i) ;
}
如鹏网杨中科老师的建议是哪怕只有一行代码,也要使用大括号,所以更好的代码是:
#include <stdio.h>
void main()
{
    int i;
    for (i=1;i<=200;i++)
    {
      if(i%7==0)
      {
       printf("%3d",i) ;
      }      
    }
}
错误2
#include <stdio.h>
int main(int argc, char *argv[])
{
int i=333;
if(i%2==0)
{
  printf("偶数");
};
else
{
  printf("奇数");
}
return 0;
}
上面的代码编译的时候会报下面的错误:
error: syntax error before "else"
在if语句中,如果有else子句,则在if后不应该使用分号。正确的代码应该是:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i=333;
if(i%2==0)
{
  printf("偶数");
}
else
{
  printf("奇数");
}
return 0;
}

总结:分号的问题是犯错率最高的一个错误。C语言的初学者最容易迷糊的就是不知道什么地方该用分号,什么地方不应该放分号。原则就是:完整的语义之后才放分号。比如对于:
      if(i%7==0)
       printf("%3d",i) ;
   if语句表示“如果。。。那么。。。”,“如果。。。那么。。。”就是一个完整的语义,因此在if后不能添加分号。
   同样对于:
    if(i%2==0)
{
  printf("偶数");
}
else
{
  printf("奇数");
}
    if。。。else。。。语句表示“如果。。。那么。。。否则”,“如果。。。那么。。。否则”就是一个完整的语义,因此在else之前不能添加分号。
原创粉丝点击