1.善于运用符号常量。
把数字埋在程序中没有任何好处,一方面不能给以后看你程序的人提供什么信息,一方面修改起来也很麻烦。
可以用define来定义符号常量。
#define 你想用的名称 实际的数字或者字符序列 /*符号常量一般大写,与小写的变量相区分*/
如:#define MAX 100
注1:define定义的符号变量是没有类型的,编译不进行安全检测,容易出问题,因此也有人说用const 可以完全代替define,
而且更好。
如:const int MAX = 100
注2:define只是替换。
如:#define A 3+5
const int A = 3+5
一式中 3 * A 就等价于 3 * 3 + 5 = 14
二式中 3 * A 就等价于 3 * 8 = 24
2.getchar()函数返回的是int类型的数据。
int c; c=getchar();
3.当心编译器由于贪心法进行错误编译
比如:将x除以p指针所指向的值,之后结果赋值给Y
得: Y=x/*p;
但是编译器会将/* 当成注释的开始,将x直接赋值给Y
正确做法应该是Y=x/(*p)
4.用单引号引起来的相当于一个数字,用双引号引起来的末尾还有 ‘\0‘
5.
float *g() 指g()函数返回浮点类型的指针
float (*g)() 为指向返回的浮点类型的函数指针
6.多个运算符要按计算顺序打括号,避免考虑不到符号优先级方面的问题产生错误的运算。
7.小心if、for、while后的分号位置,注意switch中,case后的break和最后的default。
若故意不加break语句,可以写个注释标明。
8.C语言中else总与最近的IF想匹配
if
if
else
这样的结构最后也会自动变成
if
if
else
(不像PYTHON那样,缩进对齐就行)
因此要养好习惯
if
{
if
}
else
这样才和第一个IF想匹配,因为第二个IF被“封装”了
9.对数组的操作就是对指针的操作。把数组当作参数代入函数,其实代入的就是指向第一个元素的指针。
main(int argc,char *argv[ ] )
{
}
等价于
main(int argc,char **argv)
{
}
10.数据的边界问题。避免栏杆错误。