判断unsigned long long乘法溢出_五星难度 || C语言基础数据类型、溢出及类型转换...

1430462f6c5a246441542d62b9247aa6.png

为什么有各种各样的数据类型?

信息以什么特征来区分类型呢?

数据类型的本质

一对情侣去上大课,

肯定要挑选2个挨着的座位;

一个寝室的4个女生去上大课,

那最好是一排空座的优先——

不同的类型占用的地方就不一样大

80fc4b11095715961388d4623c35bd10.png

一对情侣和双方父母一起吃饭,饭桌上其乐融融,结果两人回寝室路上都收到了自己妈妈的微信“他(她)配不上你呀!”——

同样的两个人,观察角度不同,竟然得到了完全相反的结论。

075bc2c8730aeee4f8f10e03a7c2bb33.png

这就是数据类型的本质,它告诉内存:

  • 占用多大的空间
  • 0101...如何解析

让我们从更加底层的计算机存储数据方式说起。

如同人体细胞一样的结构叫做比特 (Bit), 用来存储0, 1的信息,也是存储的最小单位。就如同圆角分一样,计算机引入了大一点的单位——字节 (Byte), 1Byte=8bit。

如果我们现在硬盘的大小是1TB的话,1TB=1024GB= (10^12) Byte。所以大家知道你的电脑能存下多少个0, 1了吧。

换算公式:

1TB→1024GB 1GB→1024MB 1MB→1024KB 1KB→1024Byte

基础数据类型

e2bd3613ca82be87b8aa17ff03a52ea2.png

长度决定了精度,3.14159265358...的精度肯定是优于3.14。

下面来一下迷之画风的数据类型存储示意图,不分整型和浮点型,我都不知道怎么存储小数点。

641934691c5ad948e921a306a55ff4f7.png

溢出及类型转换

一个瘦子穿L码叫oversized,一个胖子穿S码叫广东腊肠。

  • 溢出

当我们定义了一个占用4Byte的int类型数据时,非要把他塞到2Byte的short类型中,抱歉,前面2Byte信息就丢掉了,这个就是溢出。

  • 类型转换

同时我们切记只能将类型级别高的类型转换为数据类型低的数据

int → unsigned int → long

float → double → long double

  • 基础的语法
int intNumber = 12;
long longNumber = (long) intNumber;

如果是整数和小数之间相互转换,则可能丢失精度。

float floatNumber = 3.2;
int intNumber = (int) floatNumber; // intNumber 是3,0.2已经丢了
int intNumber = 5;
float floatNumber = (float) intNumber;  //floatNumber是5.0,还可以接受
  • 总结

如果是数学运算,尽量使用int、double等精度高的数据类型;对于特别的业务场景(如淘宝百亿级订单),则使用long型的数据。

感谢你的阅读,更多学习干货、就业信息,欢迎关注我们。

官网:www.bmatch.tech

微信公众号:Bmatch(id: bmatch)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值