购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 数据有类型

瑞说:“所以,要给计算机安装更大的内存和外存。”

C语言诞生那个年代的计算机,内存和外存都非常小,所以C语言要设计得让程序员在非常有限的存储空间里完成更多的事情。即便是在当下计算机的存储空间已经变得充裕的情况下,能否节约存储空间,依然是判断这个程序员是否具备高水平的一个标准。C语言一直经久不衰,是因为与很多编程语言相比,它提供了强大的节约内存的手段。比如,更加丰富的数据类型,就是这些手段之一。

瑞问:“数据类型和节约内存怎么就扯上了?”

可以想象,在计算机里,存储数字1和存储数字100000000,所要占用的存储空间是不同的。假设存储1用1份空间,而存储100000000需要用13份空间,你会想计算机是否能根据数据的大小,自动地分配要存储的空间大小。

瑞说:“计算机应该就是这样存储数据的。”

很快,计算机科学家就发现这不是一个好的办法,因为按照这个逻辑,数字会在内存中紧密地排列。假设程序中有5个数字:a、b、c、d和e,它们都根据大小紧密地排列着,一旦a变化了,要更大的空间,b、c、d和e就都需要调整位置。而调整位置是需要计算机进行操作的,后面的数字不会自动地向后移,这个过程太浪费时间了。

瑞说:“所以不能让数字紧密地排列在一起。”

我们可以事先计划好每个数字最大和最小可能占用的空间,提前为其分配空间大小。每个数字在它所分配的空间中进行变化,就不会影响其他的数字,这样就能够解决这个问题。

但是这个解决方案对于程序员来说挑战太大了,因为很多程序在运行的过程中,你很难知道它将变成多大的一个数。C语言虽然没有提供十分精确的空间范围,但是提供了比其他编程语言更多的范围选择。学会聪明地选择数字大小的范围是高水平程序员的能力之一。

瑞问:“数字大小的范围和数据类型又有什么关系?”

数据类型定义了两件事情:其一,这个类型数据的大小范围;其二,这是个什么样的东西,是整数、小数还是字符。所以,即便是整数,也会有不同大小范围的数据类型。

在前面的程序中,我们知道不能将字符和数字混合在一起,整数和小数的运算规则也不一样。 nGANv3TygJbgpwr7WSAh6VDHKIffUdMp4NP1ldfO/w2MVCd6No4Hk8R3+X6Sq6Kn

点击中间区域
呼出菜单
上一章
目录
下一章
×