# 核对表:基本数据类型
## 数值概论
- [] 代码中避免使用神秘数值吗?
- [] 代码考虑了除零错误吗?
- [] 类型转换很明显吗?
- [] 如果在一条语句中存在两个不同类型的变量,那么这条语句会像你期望的那样求值吗?
- [] 代码避免了混合类型比较吗?
- [] 程序编译时没有警告信息吗?
## 整数
- [] 使用整数除法的表达式能按预期的那样工作吗?
- [] 整数表达式避免整数溢出问题吗?
## 浮点数
- [] 代码避免了对数量级相差巨大的数字做加减运算吗?
- [] 代码系统地阻止了舍入错误的发生吗?
- [] 代码避免对浮点数做等量比较吗?
## 字待和字符串
- [] 代码避免使用神秘字符和神秘字符串吗?
- [] 使用字符串时避免了off-by-one错误吗?
- [] C代码把字符串指针和字符数组区别对待了吗?
- [] C代码遵循了把字符串声明为CONSTANT + 1长度的规则了吗?
- [] C代码在适当的时候用字符数组来代替指针了吗?
- [] C代码把字符串初始化为NULL来避免无终端的字符串了吗?
- [] C代码用strncpy()代替strcpy()吗?strncat()和strncmp()呢?
## 布尔变量
- [] 程序用额外的布尔变量来说明条件判断了吗?
- [] 程序用额外的布尔变量来简化条件判断了吗?
## 枚举类型
- [] 程序用枚举类型而非具名常量来提高可读性、可靠性和可修改性吗?
- [] 当变量的用法不能仅用true和false表示的时候,程序用枚举类型来取代布尔变量吗?
- [] 针对枚举类型的测试检测了非法数值吗?
- [] 把枚举类型的第一项条目保留为“非法的”了吗?
## 臭名常量
- [] 程序用具名常量而不是神秘数值来声明数据和表示循环界限吗?
- [] 具名常量的使用一致吗?——没有在有些位置使用具名常量又在其他位置使用文字量?
## 数组
- [] 所有的数组下标都没育超出数组边界吗?
- [] 数组引用没有出现off-by-one错误吗?
- [] 所有多维数组的下标的顺序都正确吗?
- [] 在嵌套循环里,把正确的变量用于数组下标来避免循环下标串话了吗?
## 创建类型
- [] 程序对每一种可能变化的数据分别采用不同的类型吗?
- [] 类型名是以该类型所表示的现实世界实体为导向,而不是以编程语言类型为导向的吗?
- [] 类型名的描述性足够强,可以帮助解释数据声明吗?
- [] 你避免重新定义预定义类型吗?
- [] 与简单地重定义一个类型相比,你考虑过创建一个新类吗?
