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应用构 ...
随机推荐
- HDU4389:X mod f(x)(数位DP)
Problem Description Here is a function f(x): int f ( int x ) { if ( x == 0 ) return 0; return f ( x ...
- vmware shared holder 虚拟机设置共享目录
1, 安装 vm-tools http://askubuntu.com/questions/29284/how-do-i-mount-shared-folders-win7-host-in-ubunt ...
- 用imagemagick和tesseract-ocr破解简单验证码
用imagemagick和tesseract-ocr破解简单验证码 Tesseract-ocr据说辨识程度是世界排名第三,可谓神器啊. 准备工作: 1.安装tesseract-ocr sudo apt ...
- 结构体key
http://www.cnblogs.com/xpchild/p/3770823.html http://blog.sae.sina.com.cn/archives/3968 实例 http://bl ...
- BestCoder Round #35
A 题意:给出n个黑球,m个白球,每次取1个球,取了n+m次以后,会生成一个随机的01串S, 如果第i次取出的是黑球,则s[i]=1,如果是白色的,那么s[i]=0, 问01串在S中出现的期望次数 大 ...
- ASP.NET MVC实现多个按钮提交事件
有时候会遇到这种情况:在一个表单上需要多个按钮来完成不同的功能,比如一个简单的审批功能. 如果是用webform那不需要讨论,但asp.net mvc中一个表单只能提交到一个Action处理,相对比较 ...
- poj 1330 Nearest Common Ancestors(LCA:最近公共祖先)
多校第七场考了一道lca,那么就挑一道水题学习一下吧= = 最简单暴力的方法:建好树后,输入询问的点u,v,先把u全部的祖先标记掉,然后沿着v->rt(根)的顺序检查,第一个被u标记的点即为u, ...
- 【转】Windows环境下Android Studio v1.0安装教程
原文网址:http://ask.android-studio.org/?/article/9 http://android-studio.org/index.php/docs/experience/1 ...
- “自私”的Linux
导读 “如果当时我真的知道从头建立一个操作系统的难度,肯定是不会有勇气去做的.”1991年8月25日,随着林纳斯·托瓦兹(Linus Torvalds)这句“天真”的描述,Linux系统正式与世人见面 ...
- Binary Tree Level Order Traversal java实现
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...