C语言常见错误及解决方法
(2010-05-19 16:22:37)
标签:
c语言常见错误杂谈 |
分类: 嵌入式 |
C语言常见错误及解决方法
既然我前边总结了那么多关于C语言常见错误那么现在给大家分享一下C语言常见错误及解决方法,关于C语言常见错误及解决方法是针对大家的通病说提出的解决方法,大家可以参考一下。
C语言常见错误及解决方法一、基础知识和数据类型、表达式、掌握关键词的具体用法及适用范围对象。
1、
double :声明双精度变量或函数
int: 声明整型变量或函数
char :声明字符型变量或函数
float:声明浮点型变量或函数
void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
auto :声明自动变量 一般不使用
struct:声明结构体变量或函数
break:跳出当前循环
else :条件语句否定分支(与 if 连用)
long
:声明长整型变量或函数
switch :用于开关语句
case:开关语句分支
enum
:声明枚举类型
register:声明积存器变量
typedef:用以给数据类型取别名(当然还有其他作用)
extern:声明变量是在其他文件正声明(也可以看做是引用变量)
return
:子程序返回语句(可以带参数,也看不带参数)
union:声明联合数据类型
const :声明只读变量
short :声明短整型变量或函数
unsigned:声明无符号类型变量或函数
continue:结束当前循环,开始下一轮循环
for:一种循环语句(可意会不可言传)
signed:生命有符号类型变量或函数
default:开关语句中的“其他”分支
goto:无条件跳转语句
sizeof:计算数据类型长度
volatile:说明变量在程序执行中可被隐含地改变
do :循环语句的循环体
while :循环语句的循环条件
static :声明静态变量
if:条件语句
2、
3、
4、
5、 printf()和scanf()的参数设置有误,主要表现在以下几方面:
l
l
l
6、
7、
void main()
{ int I,a[10], sum=0;
for(I=0;I<10;I++) sum+=a[I];
printf(“%d”,sum);
}
8、
9、
10、不能除以0,要做合法性检查;
11、类型溢出。记住每种数据类型的取值范围,确保数据在所定义类型范围之内;
12、数学表达式的格式有误。常见的有:(1)数学与C语言运算表达式的混淆(例如:=表示赋值,而=
=才表示我们数学中的相等关系)。(2)、忽略了运算的优先级。解决这个问题的最好方法就是写数学表达式时不要从左到右,而是按优先级的顺序写,写完优先级高的一个表达式后加上()再写下一级的表达式,例如:计算梯形的面积时,要s=((a+b)*h)/2,不要1/2*a+b*h.
(3)忽略了计算和赋值时的自动转换。例如:float
half=1/2;这样,因为=右边是整数相除的结果为整数0,不会得到0.5存入half,进而会影响下边的计算结果。要想不在这儿绊跟头,当计算不同类型的数据时,一定注意会不会出现引起错误的自动转换,建议最好加上强制转换。(4)赋值号左边不是变量,例如:若有#define
PI
3.14,程序中又出现PI=3.14159。又例如:f(n)=f(n-1)*n(这是典型的数学语言,在C语言中右边的乘积不能正确存储,而左边又是一个函数调用)。
13、使用库函数前,尤其是数学函数忘了加#include<?.h>。
C语言常见错误及解决方法二流程控制,了解控制流程的来龙去脉,掌握起运行规律。
1、
2、
3、
4、
5、
6、
7、
三、数组与指针
1、
2、
3、
4、
5、
四、函数
1、 函数定义的时候,函数头部加分号,而函数声明的地方忘了加分号
2、 函数实参格式不对,主要表现在:给出实参时,多给出数组类型,或者,形参是数组int
a[];的时候,给出的a[]或a[I].
3、
4、使用函数之前未声明(包括C库函数的声明)。建议大家,将所定义的一切函数都在程序开始的预处理命令后加上函数原型的声明,这样做不仅可以避免错误,而且整个程序的结构看起来更清楚。
五、结构体共用体
1、
2、
struct STU
{….
Struct data
{int year,month,day;
}birthday
};
struct STU a; struct STU是类型名称,而且不分配空间,且不能直接引用。只有定义了结构体类型struct
STU的变量a以后,才为a分配相应的内存空间,引用时也要是a.???
3、
4、
5、
六、文件
1、 使用之前没有打开文件,使用之后没有关闭文件。
2、

加载中…