• C++基本数据类型解惑


      记得刚学C语言的时候,对那些double,float,long,unsigned int各种混乱,基本是随便用,对数据类型没有一个整体的框架.最近学习<<C++ primer plus>>一书,清晰了许多.于此以读书笔记的形式记录关于C++基本数据类型的知识.

      高度概括,C++数据类型只有两种,整型与浮点型.

      一,整数:

        就是没有小数部分的数字(除bool外按宽度递增排序).它包括:

    • char
    • short
    • int
    • long
    • long long
    • bool

      其中除bool外每种类型都有符号版本与无符号版本.共11种.

        两种较为特殊的情况

    • char最常用来处理字符,但由于所有的字符都有其数值编码(例如ASCII字符集),所以char可以看做比short更小的整型.
    • bool:字面值true可转化为1,false可转换为0.另外任何数值在字都可以转换为bool值 非零数值为true,0为false.

      

      unsigned与signed:

      当数值不会为负时,比如生命值,人口数量等,可以使用无符号类型,可以增大变量的最大储存值.

      例如:short表示的范围为-32768到+32767 则unsigned版本为0-65535

      整型如此之多,那么,如何选择整数类型:

    • 如果没有足够的理由来用其他类型,则用int.因为int通常被设置为对计算机而言最为自然的长度,即处理效率最高的长度.
    • 如果变量表示的值不可能为负数,则可以使用无符号类型,这样可以表达更大的值.
    • 如果知道变量表示的值大于16位整数的最大可能值,,则使用long(即使有的系统int为32位,确保程序的可移植性)
    • 如果储存的值超过20亿,则使用long long
    • 如果short比int小,则可以使用short以节省内存.(C++中short至少16位,int至少与short一样长).
    • 如果节省内存很重要,则用short

    二,浮点数:

    能够表示带小数部分的数字

    浮点的意思:

      诸如2.5,3.15159之类的数字,计算机将其分为两部分进行储存.一部分表示值,另一部分用于对数值进行缩放.

      例如:34.125与3412.5它们除了小数点位置不同之外,数字都相同.可以把第一个数字看成0.34125(基准值)放大100倍,第二个数看成0.34125放大10000倍.缩放因子的作用是移动小数点的位置,浮点因此得名.

    C++中浮点类型有以下3种:

    • float 
    • double
    • long double 

     这三种有效位数可以一样多,通常,float为32位,double为64位,long double为80,96或者128位.

    如何选择浮点数类型:

    • 精度要求高的时候用double.double精度高,有效数字16位,float精度6位或7位
    • 能用单精度时不要用双精度,以省内存.(double消耗内存是float的两倍,double的运算速度比float慢得多)
    • 补充一点:

        在在代码中对浮点数据类型直接使用== 、<= 、>=、 !=等运算符进行比较都是不正确的。正确的方法应该是 将其差或和于小数进行比较  

        通常与10^6 比如浮点数与零的比较:

        等于0关系:  fabs(i)<=1e-6

        大于0关系:  i>1e-6

        小于0关系:  i<1e-6

      

  • 相关阅读:
    【mysql5.6】数据类型
    【leetcode】Multiply Strings(middle)
    创建JDBC模板简化代码、JDBC应用的事务管理以及连接池的作用
    IE8.0登录Oracle EBS后报Oracle error 1403错
    三联动 支持ie6,ie7 省,市,区
    任正非最新訪谈: 假设企业收留这类人, 距离死亡就不远了
    向量空间模型实现文档查询(Vector Space Model to realize document query)
    前端开发的经验
    《大话操作系统——做坚实的project实践派》(7)
    【整理】nand相关
  • 原文地址:https://www.cnblogs.com/morningsky/p/4449158.html
Copyright © 2020-2023  润新知