首页 > 其他分享 >《代码大全2》阅读笔记二——基本数据类型

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

时间:2022-09-28 18:11:45浏览次数:64  
标签:10 变量 浮点数 数据类型 整数 笔记 数组 字符串 大全

今天我阅读了《代码大全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

 

创建自己的类型

 

标签:10,变量,浮点数,数据类型,整数,笔记,数组,字符串,大全
From: https://www.cnblogs.com/jiacheng-712/p/16731655.html

相关文章

  • Android进阶笔记-7. Context详解
    Context数量Activity数量+Service数量+1(1为Application)Context的继承关系Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能......
  • linux系统下运行java项目,(做笔记)
    原链接处:Linuxjar包后台运行-阿里云开发者社区(aliyun.com) Linuxjar包后台运行2016-04-10 1755简介: Linux运行jar包命令如下:方式一:java -jarshareniu.ja......
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
    #include<iostream>#include<string>#include<vector>intmain(){usingnamespacestd;strings1;//创建一个string对象strings2{"cplusplus"};//......
  • PADS应用笔记:Layout时怎么隐藏飞线
    问题在布局时,地线太多影响看图,要怎么隐藏掉呢方法选中线后,右键设置查看网络,然后将线添加到查看列表,然后查看未布的线设置为无要重新显示的话:Ctrl+Alt+N打开网络显示......
  • PADS应用笔记:Layout里对齐和等间距方法
    问题怎么在layout布局时,对元件进对齐和等间距布局呢?方法关于对齐,鼠标选中多个元件后,邮件直接选对齐就好了,根据需求进行中心或者上下左右对齐关于等间距,有两个方法1.......
  • springboot 错误笔记
    1.springlogback控制台日志出现INFO类似错误显示字符:能够出现上面的原因是你的控制台输出工具不支持ANSI彩色字符,但是你的Spring配置文件中又......
  • PADS应用笔记:Route拉线时线只显示细线
    问题拉线时,拉出来的线只显示一个细线,但线宽设置时候是设置成够长的原因PADS有显示最小线的设置,小于设置时就会显示一个细线,把最小显示线宽改大即可。......
  • 【学习笔记】InnoDB 和 MYISAM 的区别
    InnoDB和MYISAM的区别InnoDB和MYISAM是数据库引擎,也就是数据库表的类型INNODB现在默认使用MYISAM早些年默认使用 INNODB和MYISAM的区别 MY......
  • python 内置数据类型与方法
    序列类型包括列表、元组和范围(range)以及字符串,序列类型的对象有一些共同的操作,如操作符运算、切片操作等。1.list类型与操作1.1玩转索引列表(list)类型的对象可以通过li......
  • MLP4Rec: A Pure MLP Architecture for Sequential Recommendations阅读笔记
    动机本文是2022年IJCAI上的一篇论文。自注意力模型在序列推荐上取得了卓越的效果,但是它们依赖位置编码保存顺序关系,然而位置编码可能会破坏原始embedding所包含的信息。现......