目录: 12.1 数值概论

12.2整数

12.3浮点数

12.4 字符和字符串

12.5布尔变量

12.6枚举类型

12.7具名常量

12.8数组

12.9创建你自己的类型

12.1   数值概论

基本数据类型是组成数据的块

一 、避免使用神秘数值

二、如果需要,可以使用硬编码的0和1

三、预防除零错误

四、使类型转换变得明显

五、避免混合类型的比较

六、注意编译器的警告

12.2 整数

一、检查整数除法

二、检查整数溢出

三、检查中间结果溢出

12.3 浮点数

一、避免数量级相差巨大的数之间的加减运算

二、避免等量判断

三、处理舍入误差问题:使用精度更高的数值进行计算

四、检查语言和函数库对特定数据类型的支持

12.4字符和字符串

一、避免使用神秘字符和神秘字符串

二、避免 off-by-one错误

三、了解你的语言和开发环境是如何支持Unicode的

四、 在程序生命期中尽早决定国际化、本地化策略

五、如果你知道只需要支持一种文字的语言,请考虑使用ISO8895字符集

六、如果你需要支持多种语言,请使用Unicode

七、 采用某种一致的字符串类型转换策略

C语言中的字符串

八、注意字符串指针和字符数组之间的差异

九、 把C—style字符串的长度声明为CONSTANT+1

十、用null 初始化字符串以避免无结束符的字符串

十一、用字符数组取代C中的指针

十二、 用strncpy()取代 strcpy以避免无结束符的字符串

12.5 布尔变量

一、用布尔变量对程序加以文档说明

二、用布尔变量来简化复杂的判断

三、如果需要的话,创建你自己的布尔类型

12.6枚举类型

一、用枚举类型来提高可读性

二、用枚举类型提高可靠性

三、 用枚举类型来简化修改

四、将枚举类型作为布尔变量的替代方案

五、检查非法数值

六、定义出枚举的第一项和最后一项,以便用于循环边界

七、把枚举类型的第一个元素留作非法值

八、明确定义项目代码编写标准中第一个和最后一个元素的使用规则,并且在使用时保持一致

九、警惕给枚举元素明确赋值而带来的失误

12.7 具名常量

一、数据声明中使用具名常量

二、避免使用文字量,即使是安全的

三、用具有适当作用域的变量或类来模拟具名常量

四、统一地使用具名常量

12.8 数组

一、确认所有的数组下标都没有超出数组的边界

二、考虑用容器(集合、栈、队列)来取代数组,或者将数组作为顺序化结构来处理

三、检查数组的边界点

四、如果数组是多维的,确认下标的使用顺序是正确的

五、提防下标串话

六在C中结合ARRAY_LENGTH()宏来使用数组

12.9创建你自己的类型

原则:1、给所创建的类型取功能导向的名字

2、避免使用预定义类型

3、不要重定义一个预定义的类型

4、定义替代类型以便于移植

第十二章Fundamental Data Types 基本数据类型的更多相关文章

  1. PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...

  2. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  3. 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

  4. 第二十二章 Django会话与表单验证

    第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} ...

  5. 《汇编语言 基于x86处理器》第十二章浮点数部分的代码

    ▶ 书中第十二章的程序,主要讲了 FPU 的指令和浮点数计算的过程 ● 代码,简单的 32 为浮点数测试 INCLUDE Irvine32.inc INCLUDE macros.inc .data f ...

  6. 《Django By Example》第十二章(终章) 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

  7. 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

    进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...

  8. R in action读书笔记(16)第十二章 重抽样与自助法之 置换检验

    第十二章:重抽样与自助法 本章,我们将探究两种应用广泛的依据随机化思想的统计方法:置换检验和自助法 12.1 置换检验 置换检验,也称随机化检验或重随机化检验. 有两种处理条件的实验,十个受试者已经被 ...

  9. python 教程 第二十二章、 其它应用

    第二十二章. 其它应用 1)    Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c ...

随机推荐

  1. 转:WCF、WebAPI、WCFREST、WebService之间的区别

    WCF.WebAPI.WCFREST.WebService之间的区别   注明:转载 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API ...

  2. lucene全文检索---打酱油的日子

    检索内容,一般的程序员第一时间想到的是sql的like来做模糊查询,其实这样的搜索是比较耗时的.已经有lucene帮我们 封装好了,lucene采用的是分词检索等策略. 1.lucene中的类描述 I ...

  3. Android入门(三):使用TextView、EditText 和Button接口组件

    我使用的IDE是Android Studio 2.1,虽然使用Eclipse也可以进行Android的开发,但是网上的大神大都推荐Android Studio,愿意了解的朋友可以参考知乎上关于Andr ...

  4. [DEMO] 互联网广告RTB机制简介

    前言: 传统的互联网广告一般都是大流量网站在页面中留出一定空位,某些推广商家通过买位的方式来展示自己的广告. 我们这里引入一个案例:假设大访问量网站为博客园,想要广告推广的公司为阿里云平台. (场景为 ...

  5. win10启动无法进入桌面

    情况: windows启动显示欢迎界面 无法进入桌面(可以win+E进入资源管理器,可以ctl+alt+delete进入任务管理器) 重启依然无法进入 解决: 重启 按f8 进入安全模式 再次重启OK ...

  6. WPF整理-XAML构建后台类对象

    1.XAML 接触WPF的第一眼就是XAML---XAML是用来描绘界面的.其实不然! "Actually, XAML has nothing to do with UI. It's mer ...

  7. poj1664-放苹果(递归)

    一,题意: M个苹果放在N个盘子里,允许有盘子空着,问共有多少种不同的分法. 二,思路: 递归的思想求解: 1,有反复执行的过程(调用本身) 第一种情况n>m : 必定有 n-m 个盘子空着,去 ...

  8. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

    很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...

  9. Neil·Zou 语录一

    1  既然选择了远方 Since I’ve chosen to go far    便只顾风雨兼程 I will just walk down the path I chose step by ste ...

  10. new一个JAVA对象的时候,内存是怎么分配的?

    new 对象的时候 在内存中 建立一个 内存区域 就是堆内存 用来存放对象的属性,当new完对象把对象的地址赋给对象的引用变量 这个时候 又在内存中建立一个区域 叫栈内存 用来存储 引用变量 引用变量 ...