分类: C/C++
2012-03-16 09:09:48
对于while(c==’\t’ || c = ‘ ’ || c==’\n’ ) c=getc(f);不能想当然,因为赋值运算的优先级在括号里的运算中是最低的,上句会被理解成while( (c==’\t’ || c )= (‘ ’ || c==’\n’ ) ) c=getc(f);违背了初衷。记得操作符优先级: 算术>移位>关系>逻辑
8.2直截了当的表达意图在8.1中,直截了当的表达自己的意图,用括号使自己的意图更加清晰,同时对错误进行预料,在代码的编写方式上进行预防,比如在用‘==’比较一个变量和常量时,将常量放在左边,如果误写为‘=’,则因常量不能做左值,编译报错。
8.3考察最简单的特例无论是设计程序还是测试程序,考虑最简单的特例,比如输入数据为空或者只有一个数据等情况。
8.4使用不对称边界在3.6详细讨论过。在for循环的条件中,数组下表从0开始,以不对称的边界结束。
8.5注意潜伏的bug使用C语言众所周知的部分,避免使用生僻的特性,有些函数库考虑欠周到,要采取防备性措施。
8.6防御性编程对程序用户和编译器实现的假设不要过多。再怎么不可能发生的情况有时也可能发生,因此要尽量考虑到异常的情况。