初学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之前不能添加分号。
错误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之前不能添加分号。
- 初学C语言的人最容易犯的错误集锦(一)
- 初学C语言的人最容易犯的错误集锦(二)
- 初学C语言的人最容易犯的错误集锦(三)
- 初学C语言容易犯的错误
- 容易犯的c语言错误。
- 初学C语言时在语法和语义上容易犯的一些错误
- 初学ibatis时容易犯的错误
- JavaScript初学者最容易犯的错误(一)
- 一个C/C++程序员最容易犯的错误!
- C语言高手总结的新手容易犯的错误
- C语言高手总结的新手容易犯的错误
- C语言高手总结的新手容易犯的错误
- c语言文件操作流容易犯的错误
- C语言容易犯的一些小错误
- Java开发最容易犯的错误
- 程序员最容易犯的错误总结
- 年轻时最容易犯的几个错误
- 几个容易犯的错误(一)
- Alive and at ease
- If You Think
- A strong woman and a woman of strength
- Be a lifelong learner
- 我的ASP之路
- 初学C语言的人最容易犯的错误集锦(一)
- 期末考啊
- c++模拟函数编程(fp)
- 初学C语言的人最容易犯的错误集锦(二)
- 初学C语言的人最容易犯的错误集锦(三)
- 如何更好地讲授《软件测试》这门课?
- QQ群78928780记录整理:90528花絮话题-部分
- 尊重知识产权,使用正版软件
- log4j