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的元编程可以构造出可读性极强的代码,具有极强的领域性。但是也存在极强的局限性。这个问题在本章节只是初步涉及,本人也没有过多的深入研究。
以上就是我对本章节的阅读理解。