• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    编程知识点(1)关键词之存储类型

    (应一些初学者的要求,虽然本人也绝对称不上专业,但是想让一个人快速地走出初学的迷茫,需要这种精炼的集合)

    首先,阐明一下我的观点:

    不论是什么编程语言,其实有很多的共通之处,基本上你学过一门编程语言,其他的语言也能很快学会.(本人学C++,但是会在必要的时候尽量避开语言特色只讲想法).

    在这么广泛且有深度的领域中,有些功能的确没办法先让人理解内部构造再去使用,比如C++语言中的scanf,printf涉及到指针的传递事项和变参,cin,cout涉及到模板和重载运算符等等.但是我还是选择先从存储类型开始讲,上述的复杂的东西以后也会讲到(但是有C++语言特色要开Extra篇).

    首先应当让大家知道的是计算机如果采用十进制在资源上(目前)是极为浪费,且性能不优的,而且二进制与十进制的转换是极为方便的,有兴趣可以自行百度"为什么计算机采用二进制",不浪费篇幅.

    而正如人要写字,就要有纸和笔,计算机要记录信息,就要给计算机"纸"与"笔","纸"自然是有限的,而"笔"也是有规格的.内存就是计算机的"纸",而对内存读写的部件就是"笔".

    (这么说来计算机的"笔"还可以读,哈哈)

    但是,人脑所适应的是十进制,二进制对于我们来讲实在不易理解,而且计算机还要记录非阿拉伯数字的信息,比如我这篇文章,于是就有了ASCII编码,并有了对应的存储类型char(character),对于小一点的数有short int,大一点的数有int,再大一点有long long int,这些归到整数(integer)里面,而往往有时候我们要记录小数,于是在integer里面拿几位来记录小数点的(十进制)位置,就有了float(floating number)和double(Double-precision floating-point)

    (想一想,为什么不是直接使用二进制记录小数,即记录二进制下的小数点位置?提示:将0.31试着转化成二进制小数,你会发现什么?)

    然后把这些类型的属性与可能的bug讲一下,本篇就可以结束了

    char:占1字节,记录[-128, 127](提示一下没看懂的小伙伴,这是闭区间,即包含两端点的区间)的整数,ASCII码表中一般期望背一下字符0的ASCII码,字符A的ASCII码,字符a的ASCII码以及空格和换行的ASCII码,下表中先了解[0, 127]码值对应的字符

    ([128, 255]的部分我想你在学了unsigned以后会明白的,或者我提示一下,你把这个码值转八位二进制看看有什么发现).

    ASCII码表,来自网络

    short int:占2字节,记录[-32768, 32767]的整数.

    int:占4字节,记录[-2147483648, 2147483647]的整数.

    long long int:占8字节,记录[-9,223,372,036,854,775,808, 9,223,372,036,854,775,807]的整数.

    (想一想,为什么下限的绝对值比上限的绝对值多1?提示:从二进制符号位来思考"正负数"的个数是否相同)

    (要讲浮点数,引入一下计算机上的科学记数法,比如6.02e23表示6.02乘以10的23次幂,指数为负数我不用说了吧)

    float:占4字节,记录[3.4e-38, 3.4e38]的实数,有效位数为6~7位.(因为有一部分位拿出来记录小数点了,精确度比不上整数的),但是前期入门时用用足够了

    double:占8字节,记录[1.7e-308, 1.7e308]的实数,有效数位为15~16位(据说double类型的处理在现代的优化下比float快...)

    那么问题就来了:我有一个int类型(32位),如果我将一个占用32位以上的数据赋值给这个int会怎么样呢?答案是32位以上的内容丢弃,32位及以下的内容照搬,而符号位就有可能被赋到1的值,也就是有些时候数据溢出会出现负数,有的时候会有正数.如果上下限不够,我们会采用高精度的方式来扩大上下限,所以大部分情况下出现数据溢出的情况是程序员的不认真导致的bug.

    您可能感兴趣的文章:
    • C++实现图的邻接表存储和广度优先遍历实例分析
    • C++实现图的邻接矩阵存储和广度、深度优先遍历实例分析
    • C++采用TLS线程局部存储的用法实例
    • C++中静态存储区与栈以及堆的区别详解
    上一篇:Flyway的简单介绍及使用详解
    下一篇:git checkout 命令使用详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    编程知识点(1)关键词之存储类型 编程,知识点,关键词,之,