数据类型、操作过程和程序

维基百科关于数据类型(data type)第一段就说它是数据的分类方法,指明是哪一种类型如整形,浮点型,布尔型,字符型等等。这些是一门语言的本质之一——类型系统决定的,它很大程度上区分了不同语言的本质特性。不同的数据类型对应着不同的存储方式和可操作方式。例如,C语言的int型和float型数据,在内存中一般都占有4字节,但存储的格式,对加法操作的方式却不同。但是对某些“无类型”(准确说是动态数据类型)语言来说,类型系统似乎不重要了。实际上是编译器或者解释器“智能”的判断你输入的是哪种数据类型,然后根据它的类型系统规则判断你的变量是哪种类型并可进行哪些操作(显示的表现为语法)。

计算机语言归根结底就是在做两件事:

1、数据的表示;

2、数据的处理;

这两个过程是紧密耦合的,不同的数据表示暗含着它的处理方法也不同。数据表示的最小粒度是机器数据类型(machine data type)的bit位,八位表示一个字节。机器的字长word有32位或者64位表示在CPU内部累加器、寄存器一次处理的位数(bit)。在机器层次上数据类型是没有差别的,都是二进制数,但是在编译过程中,编译器会将不同数据类型的处理,翻译成不同的机器指令。例如浮点类型的数据运算都是浮点运算器完成,而整数运算由整数运算器完成,对应不同的汇编指令。如果类型出差错,运算的结果也就不对了。在函数调用过程中,若函数的参数是int型指针,但是传给它的是int型数据,虽然在32位机器上都是4字节表示,但是在函数内部会进一步读取地址的内容,显然就会出差。这时,编译器需要进行类型检查(type checking)以保障类型安全(type safe)。

每一类的数据类型都对应有基本的操作,比如对数字类型有加减乘除运算(+、-、*、/),对布尔型数据有逻辑是非判断(&&、||)。这些运算符表示一个基本过程,这些过程的操作对象就是基本类型的数据。程序语言的基本元素就包括了两大类表达式——基本类型的数据和基本的过程,它们组成了程序的基本单位,往后再复杂的表达式、语句或者函数都由它们扩展组合而来(组合的方法也表现为语法),操作在复杂的或者自定义的数据类型上。 

简单的说,程序=数据+过程。例如:

/**
*整型加法
*
*/
int a, b;
a + b;
在上面的简单C代码中,有三个元素分别是a,b和+。其中a,b是int型数据,根据类型系统的定义int型数据的存储格式,一般是占四个字节,有加、减、乘、除、赋值、取反等等操作。还有些隐型的类型转换,如int型数据和float型数据相加时隐型转换成float型,然后再相加。“+”操作符将a,b两个int型数据相加作为表达式(a+b)整体的值,可以赋值或者转化成字符串输出。“+”在两个int型数据的中间表示加法操作是C语言组合表达式的方法,在某些函数式语言中,如Lisp,(+ a b)与上述C语言中表达同一个意思,这些差别表明不同语言之间的表达式组合方法不同。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值