homework-附加题:第12章基本数据类型阅读总结
基本数据类型是构建其他所有数据类型的构造块,本人认为这部分是计算机编程的基础,值得得到大家的注意。
首先,在本章中作者提到了避免使用magic number。使用magic number这种做法是极其不值得提倡的,在C语言中我们在编程开始的时候应该把我们心中的常量用宏定义好,当我们需要这个常量的时候直接使用这个宏就可以了。但是假如我们直接使用这个常量,假设我们想定义我们心目中的在这个程序中允许出现的最小值,我们先将其看成0。在程序的迭代开发过程中,我们又允许负数的出现了,这时候我们需要将这个最小值减小。但是如果我们在很多地方直接用到了这个常量,那修改过程是极其残酷的。并且如果某个地方没有得到修改,可能会导致程序运行的异常,debug的过程大家都是深有体会的。
第二点,作者提到了要检查整数的溢出。我个人的观点,对于加减法这种对数据的数量级影响不大的运算,可能不易发生此类现象。但如果是乘法这样的运算,那就很有可能出现整数溢出的现象。假设要求两个数的最大公倍数,两个数都是在20万左右。人们的常规设想就是先求最小公约数,然后用两个数的乘积除以两个数的最小公约数。但是求两个数的乘积时就会发生整数溢出的现象,int型变量只有32位,而乘积的结果远远超过int型的容量。因此就会发生溢出现象。所以,我们可以采用double型的变量,但是double型的变量可能存在精度的问题。可能更好的解决办法是使用long long型变量,但是由于编译器的原因,此类型变量不是在所有场景均可以使用。
第三点,要避免数量级相差巨大的数之间的加减运算。尤其是在进行浮点数的计算时,通过数学上严格的证明,当两个数的数量级相差巨大时,计算结果的精度会得到极其大的削减。同样在也要避免等量的浮点数相减,由于精度的不同,实际情况下可能并不等量,导致运行结果出错,出现除零现象或者计算结果精度太差的现象。
第四点,要注意字符串指针与字符数组之间的区别。这是在C语言中出现的现象,因为C语言中的字符串操作差不多都是通过调用其他函数实现的,普通的赋值语句只会使二者指向同一个字符串。并且要注意用null初始化字符串,否则则会出现悬空指针的现象,产生使程序崩溃的错误。
第五点,作者提到了creating your own types这种现象,我个人觉得ruby在这个方面目前是做的比较好的。ruby的元编程可以构造出可读性极强的代码,具有极强的领域性。但是也存在极强的局限性。这个问题在本章节只是初步涉及,本人也没有过多的深入研究。
以上就是我对本章节的阅读理解。
homework-附加题:第12章基本数据类型阅读总结的更多相关文章
- c++primerplus(第六版)编程题——第3章(数据类型)
声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. 工程命名和文件命名可以命名成易识 ...
- Linux就这个范儿 第12章 一个网络一个世界
Linux就这个范儿 第12章 一个网络一个世界 与Linux有缘相识还得从一项开发任务说起.十八年前,我在Nucleus OS上开发无线网桥AP,需要加入STP生成树协议(SpanningTree ...
- JS读书心得:《JavaScript框架设计》——第12章 异步处理
一.何为异步 执行任务的过程可以被分为发起和执行两个部分. 同步执行模式:任务发起后必须等待直到任务执行完成并返回结果后,才会执行下一个任务. 异步执行模式:任务发起后不等待任务执行完成,而是马上 ...
- 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...
- ASM:《X86汇编语言-从实模式到保护模式》第12章:存储器的保护
12章其实是11章的拓展,代码基本不变,就是在保护模式下展开讨论. ★PART1:存储器的保护机制 1. 修改段寄存器的保护 当执行把段选择子传到段寄存器的选择器部分的时候,处理器固件在完成传送之前, ...
- 【JavaScript权威指南(第五版)】笔记之第一部分 核心javascript (第1章~第12章)
第一章 javascript概述 ①.javascript是一种松散类型语言;也是一种解释型语言; 第二章 词法结构 ①.大小写敏感 第三章 数据类型和值 ①.isFi ...
- 【机器学习实战】第12章 使用FP-growth算法来高效发现频繁项集
第12章 使用FP-growth算法来高效发现频繁项集 前言 在 第11章 时我们已经介绍了用 Apriori 算法发现 频繁项集 与 关联规则.本章将继续关注发现 频繁项集 这一任务,并使用 FP- ...
- Java核心技术卷一基础知识-第12章-泛型程序设计-读书笔记
第12章 泛型程序设计 本章内容: * 为什么要使用泛型程序设计 * 定义简单泛型类 * 泛型方法 * 类型变量的限定 * 泛型代码和虚拟机 * 约束与局限性 * 泛型类型的继承规则 * 通配符类型 ...
- Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案
一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...
随机推荐
- windows和linux共享文件
一篇文章: 环境:主机操作系统 是Windows XP ,虚拟机 是Ubuntu 9.10,虚拟机是VirtualBox 3.08. 1. 安装增强功能包(Guest Additions) 安装好Ub ...
- PHP之APC缓存详细介绍(转)
1.APC缓存简介 APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”.它为我们提供了缓存和优化PHP的中间代码的框架. APC的缓存分两部分:系统缓存和用户数据缓 ...
- 9本java程序员必读的书
来源:http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=202904638&idx=2&sn=21dd20438e32a ...
- ios UICollectionView滑动时操作
点开UICollectionViewDelegate,发现有@protocol UICollectionViewDelegate <UIScrollViewDelegate>. 所以只要实 ...
- JasperReports+iReport在eclipse中的使用
转载:http://blog.csdn.net/daming924/article/details/7402295 一.介绍1)它可以PDF,HTML,XML等多种形式产生报表或动态报表,在新版本还支 ...
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem (树状数组求逆序数 变形)
题目链接 题意:给出数组A,定义f(l,r,x)为A[]的下标l到r之间,等于x的元素数.i和j符合f(1,i,a[i])>f(j,n,a[j]),求i和j的种类数. 我们可以用map预处理出 ...
- poj3683 Priest John's Busiest Day
2-SAT. 读入用了黄学长的快速读入,在此膜拜感谢. 把每对时间当作俩个点.如果有交叉代表相互矛盾. 然后tarjan缩点,这样就能得出当前的2-SAT问题是否有解. 如果有解,跑拓扑排序就能找出一 ...
- 试图从数据库 ‘UFData_001_2003' 中提取的逻辑页 (1:10720) 属于对象 '0',而非对象 'syscolumns'
数据库可以使用,可以备份,但对备份进行恢复时报错,使用sp_attach_db对两个物理文件进行连接时,报同样错误: 服务器: 消息 605,级别 21,状态 1,行 1 试图从数据库 ‘UFData ...
- 【C#学习笔记】调用C++生成的DLL
首先用vs2010建立win32项目,选择dll和空项目. 头文件add.h extern "C" __declspec(dllexport) int add(int a,int ...
- (转)TCP协议那些事
(上) TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是 ...