更新时间:2019-01-01 01:34:07
封面
版权信息
前言
第1章 数据,程序设计之根本
建议1:认识ANSI C
建议2:防止整数类型产生回绕与溢出
建议2-1:char类型变量的值应该限制在signed char与unsigned char的交集范围内
建议2-2:使用显式声明为signed char或unsigned char的类型来执行算术运算
建议2-3:使用rsize_t或size_t类型来表示一个对象所占用空间的整数值单位
建议2-4:禁止把size_t类型和它所代表的真实类型混用
建议2-5:小心使用无符号类型带来的陷阱
建议2-6:防止无符号整数回绕
建议2-7:防止有符号整数溢出
建议3:尽量少使用浮点类型
建议3-1:了解IEEE 754浮点数
建议3-2:避免使用浮点数进行精确计算
建议3-3:使用分数来精确表达浮点数
建议3-4:避免直接在浮点数中使用“==”操作符做相等判断
建议3-5:避免使用浮点数作为循环计数器
建议3-6:尽量将浮点运算中的整数转换为浮点数
建议4:数据类型转换必须做范围检查
建议4-1:整数转换为新类型时必须做范围检查
建议4-2:浮点数转换为新类型时必须做范围检查
建议5:使用有严格定义的数据类型
建议6:使用typedef来定义类型的新别名
建议6-1:掌握typedef的4种应用形式
建议6-2:小心使用typedef带来的陷阱
建议6-3:typedef不同于#define
建议7:变量声明应该力求简洁
建议7-1:尽量不要在一个声明中声明超过一个的变量
建议7-2:避免在嵌套的代码块之间使用相同的变量名
建议8:正确地选择变量的存储类型
建议8-1:定义局部变量时应该省略auto关键字
建议8-2:慎用extern声明外部变量
建议8-3:不要混淆static变量的作用
建议8-4:尽量少使用register变量
建议9:尽量不要在可重入函数中使用静态(或全局)变量
建议10:尽量少使用全局变量
建议11:尽量使用const声明值不会改变的变量
第2章 保持严谨的程序设计,一切从表达式开始做起
建议12:尽量减少使用除法运算与求模运算
建议12-1:用倒数相乘来实现除法运算
建议12-2:使用牛顿迭代法求除数的倒数
建议12-3:用减法运算来实现整数除法运算
建议12-4:用移位运算实现乘除法运算
建议12-5:尽量将浮点除法转化为相应的整数除法运算
建议13:保证除法和求模运算不会导致除零错误
建议14:适当地使用位操作来提高计算效率
建议14-1:尽量避免对未知的有符号数执行位操作
建议14-2:在右移中合理地选择0或符号位来填充空出的位
建议14-3:移位的数量必须大于等于0且小于操作数的位数
建议14-4:尽量避免在同一个数据上执行位操作与算术运算
建议15:避免操作符混淆
建议15-1:避免“=”与“==”混淆
建议15-2:避免“|”与“||”混淆
建议15-3:避免“&”与“&&”混淆
建议16:表达式的设计应该兼顾效率与可读性
建议16-1:尽量使用复合赋值运算符
建议16-2:尽量避免编写多用途的、太复杂的复合表达式
建议16-3:尽量避免在表达式中使用默认的优先级
第3章 程序控制语句应该保持简洁高效
建议17:if语句应该尽量保持简洁,减少嵌套的层数
建议17-1:先处理正常情况,再处理异常情况
建议17-2:避免“悬挂”的else
建议17-3:避免在if/else语句后面添加分号“;”
建议17-4:对深层嵌套的if语句进行重构
建议18:谨慎0值比较
建议18-1:避免布尔型与0或1进行比较
建议18-2:整型变量应该直接与0进行比较
建议18-3:避免浮点变量用“==”或“!=”与0进行比较
建议18-4:指针变量应该用“==”或“!=”与NULL进行比较
建议19:避免使用嵌套的“?:”
建议20:正确使用for循环
建议20-1:尽量使循环控制变量的取值采用半开半闭区间写法
建议20-2:尽量使循环体内工作量达到最小化
建议20-3:避免在循环体内修改循环变量
建议20-4:尽量使逻辑判断语句置于循环语句外层
建议20-5:尽量将多重循环中最长的循环放在最内层,最短的循环放在最外层
建议20-6:尽量将循环嵌套控制在3层以内
建议21:适当地使用并行代码来优化for循环
建议22:谨慎使用do/while与while循环
建议22-1:无限循环优先选用for(;;),而不是while(1)
建议22-2:优先使用for循环替代do/while与while循环
建议23:正确地使用switch语句
建议23-1:不要忘记在case语句的结尾添加break语句
建议23-2:不要忘记在switch语句的结尾添加default语句
建议23-3:不要为了使用case语句而刻意构造一个变量
建议23-4:尽量将长的switch语句转换为嵌套的switch语句
建议24:选择合理的case语句排序方法
建议24-1:尽量按照字母或数字顺序来排列各条case语句
建议24-2:尽量将情况正常的case语句排在最前面
建议24-3:尽量根据发生频率来排列各条case语句
建议25:尽量避免使用goto语句
建议26:区别continue与break语句
第4章 函数同样需要保持简洁高效
建议27:理解函数声明
建议28:理解函数原型
建议29:尽量使函数的功能单一
建议30:避免把没有关联的语句放在一个函数中
建议31:函数的抽象级别应该在同一层次