《代码大全2》阅读笔记二——基本数据类型

今天我阅读了《代码大全2》的第十二章——基本整数类型。谈起基本整数类型,我的脑海中就浮现出来整数、浮点数、字符串、布尔变量等这些整数类型,这章主要讲解了这几种整数类型使用时的注意事项。

整数

在使用整数时应注意以下几点:

检查整数除法:对于整数除法来说,7/10不等于0.7,而是等于0。在现实生活中10*(7/10)=7,但是在整数运算的世界中,10*(7/10)=0。%为求余符号,7%10=7.

检查整数溢出:在做整数的相乘或相加时,要注意可能出现的最大整数。允许出现的最大无符号整数经常是2^23-1,有时候是2^16-1.当运算时出现最大整数超过此范围,运算结果会出错。

检查中间结果溢出:进行整数运算过程中,不仅要考虑结果的取值,还要考虑中间过程中的可能取值,如果中间结果超过最大整数,最后结果也会出错。

 

浮点数

在使用浮点数应该注意的几点:

避免数量级相差巨大的数之间的加减运算:32位的浮点数变量,10000000.00+0.1的最终结果可能会得到10000000.00,在实际生活中会遇到数量级相差过大的数据相加。如何解决这种现象?书上给了一种解决方案:将数据进行排序,从小到大以此相加。

避免等量判断:很多应该相等的浮点数值并不一定相等,举例来说10个0.1相加很少会等于1.0 。对于这种现象也有对应的解决方法:寻找一个可以接受的精准度范围,通过布尔函数进行判断数值是否符合即可。

double judgeCount=0.001
 boolean equals(double count1,double count2)
{
       if(Math.abs(count1-count2)<judgeCount)
           {
            return true;
            }
               else{
                       return false;
                      }

处理舍入误差问题:由于舍入导致的误差也可用第二种方法解决,也可用以下几种方法:

                                                                                                                                         换一种精确度更高的变量类型

                                                                                                                                          换用二进制编码的十进制变量

                                                                                                                                          把浮点变量变成整型变量

 

字符和字符串

字符串里面主要指出要避免使用神秘字符和神秘哦字符串,神秘字符是指程序中随处可见的字面形式表示的字符(A),神秘字符串是指字面形式表示的字符串。

在C语言中 要注意字符串指针和字符数组之间的差异:警惕任何包含字符串和等号的表达式,StringPtr=" Some Text S tring" 这种形式只是让StringPtr指针指向该字面字符串,并没有将内容拷贝

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

 

布尔变量

使用布尔变量对程序加以文档说明:将表达式结果赋给一个变量,从而使这一判断更明显

x=((a>b)||(c>b))
y=(a>c)
if(x&&y)
{
   ...
}

用布尔变量来简化复杂的判断:如果出现数量较多的判断条件时,将表达式结果赋给不同的变量,然后通过判断变量来比较结果

 

枚举类型

当程序中出现多个重复一样的取值时,可以建立枚举类型来提高代码阅读性,当需要修改数值时,方便进行修改,

 

数组

数组注意点:

确认所有的数组下标都没有超出数组的边界:数组成员不可以越界

考虑用容器来取代数组,或者将数组作为顺序化结构来处理数组适合顺序访问,若要采取随机访问则应先考虑,集合、栈、队列等结构来代替数组

检查数组边界点:使用数组存取元素时,一定要考虑好下标,比如说数组a[0]取的是第一个元素。

如果数组是多维的,确认下标的使用顺序是正确的:二维数组a[i][j],注意区分i和j

 

创建自己的类型

 

posted @ 2022-09-28 18:03  伽澄  阅读(63)  评论(0编辑  收藏  举报