第十二章 基本数据类型

泪湿孤枕 提交于 2019-12-01 08:59:04

第十二章 基本数据类型

 

数值概论1654948748

下面一些建议能够使你在使用数的时候少犯错误。

  • 避免使用神秘数值
    • 修改会变得更可靠;
    • 修改会变得更容易;
    • 你的代码变得更可读。
  • 如果需要可以使用硬编码的0和1;
  • 预防除零错误;
  • 使类型转换变得明显;
  • 避免混合类型的比较;
  • 注意编译器的警告。

整数

在用整数的时候,要注意下面的注意事项。

  • 检查整数除法;
  • 检查整数溢出;
  • 检查中间结果溢出。

浮点数

使用浮点数应遵循的原则:

  • 避免数量级相差巨大的数之间的加减运算;
  • 避免等量判断;
  • 处理舍入问题:
    • 换用一种精度更高的变量类型;
    • 换用二进制编码的十进制变量;
    • 把浮点变量变成整数变量;
  • 检查语言和函数库对特定数据类型的支持。

字符和字符串

使用字符串的技巧:

  • 避免使用神秘字符和神秘字符串;
  • 避免off-by-one错误;
  • 了解你的语言和开发环境是如何支持Unicode的;
  • 在程序生命周期中尽早决定国际化/本地化策略;
  • 如果你知道只需要支持一种文字的语言,请考虑使用ISO 8859字符集;
  • 如果你需要支持多种语言,请使用Unicode;
  • 采用某种一致的字符串类型转换策略。

C语言中的字符串

直接处理C字符串避免常见错误的方法。

  • 注意字符串指针和字符串数组之间的差异:
    • 警惕任何包含字符串和等号的表达式;
    • 通过命名规则区分变量是字符串数组还是字符串指针。
  • 把C-style字符串的长度声明为CONSTANT + 1;
  • 用null初始化子串串以避免没有终端的字符串;
  • 用字符数组取代C中的指针;
  • 用strncpy()取代strcpy()以避免无终端的字符串。

布尔变量

  • 用布尔变量对程序加以文档说明;
  • 用布尔变量来简化复杂的判断;
  • 如果需要的话,创建你自己的布尔类型。

枚举类型

  • 用枚举类型来提高可读性;
  • 用枚举类型来提高可靠性;
  • 用枚举类型来简化修改;
  • 将枚举类型作为布尔变量的替代方案;
  • 检查非法数值;
  • 定义出枚举的第一项和最后一项,以便用于循环边界;
  • 把枚举类型的第一个元素留作非法值;
  • 明确定义项目代码编写标准中的第一个和最后一个元素的使用规则,并且在使用时保持一致;
  • 警惕给枚举元素明确赋值而带来的失误;

具名常量

具名常量很像变量,一旦赋值以后就不能再修改了。

  • 在数组声明中使用具名常量;
  • 避免使用文字量,即使是安全的;
  • 用具有适当作用域变量或者类来模拟具名常量;
  • 统一地使用具名常量。

数组

数组是最简单和最常用的结构化数据类型。

  • 确认所有的数组下标都没有超出数组边界;
  • 考虑用容器来取代数组,或者将数组作为顺序化结构来处理;
  • 检查数组的边界点;
  • 如果数组是多维的,确认下标的使用顺序是正确的;
  • 提防下标串话;
  • 在C中结合ARRY_LENGTH()宏来使用数组。

数值概论1654948748

下面一些建议能够使你在使用数的时候少犯错误。

  • 避免使用神秘数值
    • 修改会变得更可靠;
    • 修改会变得更容易;
    • 你的代码变得更可读。
  • 如果需要可以使用硬编码的0和1;
  • 预防除零错误;
  • 使类型转换变得明显;
  • 避免混合类型的比较;
  • 注意编译器的警告。

整数

在用整数的时候,要注意下面的注意事项。

  • 检查整数除法;
  • 检查整数溢出;
  • 检查中间结果溢出。

浮点数

使用浮点数应遵循的原则:

  • 避免数量级相差巨大的数之间的加减运算;
  • 避免等量判断;
  • 处理舍入问题:
    • 换用一种精度更高的变量类型;
    • 换用二进制编码的十进制变量;
    • 把浮点变量变成整数变量;
  • 检查语言和函数库对特定数据类型的支持。

字符和字符串

使用字符串的技巧:

  • 避免使用神秘字符和神秘字符串;
  • 避免off-by-one错误;
  • 了解你的语言和开发环境是如何支持Unicode的;
  • 在程序生命周期中尽早决定国际化/本地化策略;
  • 如果你知道只需要支持一种文字的语言,请考虑使用ISO 8859字符集;
  • 如果你需要支持多种语言,请使用Unicode;
  • 采用某种一致的字符串类型转换策略。

C语言中的字符串

直接处理C字符串避免常见错误的方法。

  • 注意字符串指针和字符串数组之间的差异:
    • 警惕任何包含字符串和等号的表达式;
    • 通过命名规则区分变量是字符串数组还是字符串指针。
  • 把C-style字符串的长度声明为CONSTANT + 1;
  • 用null初始化子串串以避免没有终端的字符串;
  • 用字符数组取代C中的指针;
  • 用strncpy()取代strcpy()以避免无终端的字符串。

布尔变量

  • 用布尔变量对程序加以文档说明;
  • 用布尔变量来简化复杂的判断;
  • 如果需要的话,创建你自己的布尔类型。

枚举类型

  • 用枚举类型来提高可读性;
  • 用枚举类型来提高可靠性;
  • 用枚举类型来简化修改;
  • 将枚举类型作为布尔变量的替代方案;
  • 检查非法数值;
  • 定义出枚举的第一项和最后一项,以便用于循环边界;
  • 把枚举类型的第一个元素留作非法值;
  • 明确定义项目代码编写标准中的第一个和最后一个元素的使用规则,并且在使用时保持一致;
  • 警惕给枚举元素明确赋值而带来的失误;

具名常量

具名常量很像变量,一旦赋值以后就不能再修改了。

  • 在数组声明中使用具名常量;
  • 避免使用文字量,即使是安全的;
  • 用具有适当作用域变量或者类来模拟具名常量;
  • 统一地使用具名常量。

数组

数组是最简单和最常用的结构化数据类型。

  • 确认所有的数组下标都没有超出数组边界;
  • 考虑用容器来取代数组,或者将数组作为顺序化结构来处理;
  • 检查数组的边界点;
  • 如果数组是多维的,确认下标的使用顺序是正确的;
  • 提防下标串话;
  • 在C中结合ARRY_LENGTH()宏来使用数组。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!