计算机可以做很多事,比如数值计算,名字排序,执行语音或视频命令,计算彗星轨道,准备邮寄列表,拨电话号码,画图,做决策以及任何其他可以想象到的事情。
要完成这些任务,程序需要数据,即承载信息的数字与字符。
个人感想:“一切都围绕着数据,枯燥的数字或者字符,其本质蕴涵着信息,数据既是信息。怪不得有个经典表述——程序=数据+算法。 前者是信息,后者是对信息的处理,提取出对我们有用的部分”。
数据类型是个很精妙的发明。
要把人类日常使用的数据,存储到计算机中,又要是二进制。那就必须规定怎么存,还要规定怎么取,这样才能保证数据的准确性。
这种规定或者称为约定,与人之间交流可以写成文字,大家照着规矩办事就行了。
那与计算机怎么约定呢?
所以需要有一个程序来负责做具体的约定执行工作,这个程序就是编译器。
数据类型既是写给人类看的(上层约定),也是是写给编译器看的(下层约定),编译器负责数据怎么存,怎么取。编译器又怎么样负责呢?——把存取的详细方式与过程,做成了一条一条可执行的机器码。
了解了这个,就能明白为什么需要数据类型,int,short,long这些数据为什么要区分范围,为什么会溢出,并且一旦数据类型说明符写错,明明定义了unsigned int num= 300,printf(“%d”,num)的结果会是负数。
用%u表示无符号,用%hd表示短整型。
本机上long的位数有64位,所以跟long long 的值相同。
要表现区别,把代码最后%ld改成%d就行。
字(word)是自然存储单位,对于8位机来说,字=8位;对于16位机来说,字=16位;对于32位机来说,字=32位。
所以字(word)是一个可变的单位,但有时候,人们又习惯用1字=16位,1字=2字节(byte)来表示。
比如win7自带的计算器: