第十二章 基本数据类型
数值概论1654948748
下面一些建议能够使你在使用数的时候少犯错误。
- 避免使用神秘数值
- 修改会变得更可靠;
- 修改会变得更容易;
- 你的代码变得更可读。
- 如果需要可以使用硬编码的0和1;
- 预防除零错误;
- 使类型转换变得明显;
- 避免混合类型的比较;
- 注意编译器的警告。
整数
在用整数的时候,要注意下面的注意事项。
- 检查整数除法;
- 检查整数溢出;
- 检查中间结果溢出。
浮点数
使用浮点数应遵循的原则:
- 避免数量级相差巨大的数之间的加减运算;
- 避免等量判断;
- 处理舍入问题:
- 换用一种精度更高的变量类型;
- 换用二进制编码的十进制变量;
- 把浮点变量变成整数变量;
- 检查语言和函数库对特定数据类型的支持。
字符和字符串
使用字符串的技巧:
- 避免使用神秘字符和神秘字符串;
- 避免off-by-one错误;
- 了解你的语言和开发环境是如何支持Unicode的;
- 在程序生命周期中尽早决定国际化/本地化策略;
- 如果你知道只需要支持一种文字的语言,请考虑使用ISO 8859字符集;
- 如果你需要支持多种语言,请使用Unicode;
- 采用某种一致的字符串类型转换策略。
C语言中的字符串
直接处理C字符串避免常见错误的方法。
- 注意字符串指针和字符串数组之间的差异:
- 警惕任何包含字符串和等号的表达式;
- 通过命名规则区分变量是字符串数组还是字符串指针。
- 把C-style字符串的长度声明为CONSTANT + 1;
- 用null初始化子串串以避免没有终端的字符串;
- 用字符数组取代C中的指针;
- 用strncpy()取代strcpy()以避免无终端的字符串。
布尔变量
- 用布尔变量对程序加以文档说明;
- 用布尔变量来简化复杂的判断;
- 如果需要的话,创建你自己的布尔类型。
枚举类型
- 用枚举类型来提高可读性;
- 用枚举类型来提高可靠性;
- 用枚举类型来简化修改;
- 将枚举类型作为布尔变量的替代方案;
- 检查非法数值;
- 定义出枚举的第一项和最后一项,以便用于循环边界;
- 把枚举类型的第一个元素留作非法值;
- 明确定义项目代码编写标准中的第一个和最后一个元素的使用规则,并且在使用时保持一致;
- 警惕给枚举元素明确赋值而带来的失误;
具名常量
具名常量很像变量,一旦赋值以后就不能再修改了。
- 在数组声明中使用具名常量;
- 避免使用文字量,即使是安全的;
- 用具有适当作用域变量或者类来模拟具名常量;
- 统一地使用具名常量。
数组
数组是最简单和最常用的结构化数据类型。
- 确认所有的数组下标都没有超出数组边界;
- 考虑用容器来取代数组,或者将数组作为顺序化结构来处理;
- 检查数组的边界点;
- 如果数组是多维的,确认下标的使用顺序是正确的;
- 提防下标串话;
- 在C中结合ARRY_LENGTH()宏来使用数组。