您现在的位置是:网站首页> 编程资料编程资料
编程知识点(1)关键词之存储类型_其它综合_
2023-05-27 205人已围观
简介 编程知识点(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以后会明白的,或者我提示一下,你把这个码值转八位二进制看看有什么发现).
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.
相关内容
- Flyway的简单介绍及使用详解_其它综合_
- git pull时冲突的几种解决方式(小结)_其它综合_
- 一文读懂吞吐量(TPS)、QPS、并发数、响应时间(RT)概念_其它综合_
- C、C++、Java到Python,编程入门学习什么语言比较好_其它综合_
- Web前端和JAVA应该学哪个?哪个就业形势更胜一筹?_其它综合_
- svn 常用命令集合_其它综合_
- ol7.7安装部署4节点hadoop 3.2.1分布式集群学习环境的详细教程_其它综合_
- ol7.7安装部署4节点spark3.0.0分布式集群的详细教程_其它综合_
- fastjson到底做错了什么?为什么会被频繁爆出漏洞?(推荐)_其它综合_
- 盘点网络编程必须要知道的基础知识_其它综合_
点击排行
- TYSB手游公测版下载-TYSB官方唯一正版手游下载 _安卓网
- 青云传之琉璃梦手游下载-青云传之琉璃梦官方版下载 v5.7.0安卓版_安卓网
- 爆枪突击专用修改器下载-爆枪突击无限兑换码 v1.0.0.3辅助修改_安卓网
- 丛林动物宝宝发型沙龙游戏-丛林动物宝宝发型沙龙(休闲装扮)Baby Jungle Animal Hair Salon v1.0.10_安卓网
- 洗牌猫下载-洗牌猫(卡牌对战)Shuffle Cats v0.14.8_安卓网
- 终极奥特超人50周年版下载-终极奥特超人50周年版(奥特曼正版授权) v2.3_安卓网
- project h手机|project h安卓-project h手机版(虚拟空间女友)预约 v1.0_安卓网
- project h试玩版-project h手游试玩版预约 v1.0_安卓网