关于一个顺序员来说,写代码的第一件是请,生怕就是须要定义一些数据范例。而顺序自身,就是对这些数据范例举行操纵,有没有人思考过,为何每种言语编写的顺序,最先都须要定义数据范例呢?
以下面的C代码为例,我们来申明这个题目:
#include<stdio.h>
int main()
{
int a=100;
int b=200;
double a1=10.1;
double b1=10.2;
a=a+b;
a1=a1+b1;
getchar();
return 0;
}
这段代码异常简朴,定义了四个数据,两个范例。人人看,a=a+b
;和a1=a1+b1
;这两个语句,险些一样,那末,我问你,这两个语句,在编译时,编译器会用统一段代码来替代这两个语句吗?
明显不但是统一段代码,由于浮点数和整数,在计算机内里,运用了差别的处理器,整数运用一般的CPU,而浮点数必需运用浮点运算器。所以,这两句话,发生的机械代码完整差别!
那末题目来了,编译器怎样晓得,在遇到两个数相加的时刻,是运用浮点运算器的机械指令,照样运用一般CPU的机械指令?此时,编译器就会搜检举行加法操纵的两个加数的数据范例,依据他们的数据范例,来肯定究竟运用哪个运算器的机械代码
。此时,数据范例定义的意义就凸显出来了。
总结:
经由过程上述简朴的形貌,我们就能够清晰,任何编程言语(除了汇编,汇编只划定数据的字长),都邑有本身的数据范例,数据范例背地,隐蔽的是编译器或许诠释器对数据处理方式的定义
。晓得了这个今后,我们在定义数据范例的时刻,就应该晓得,我们定义的这类数据范例,能够举行哪些操纵,这些操纵的划定规矩是什么,如许我们才算真正控制了这个数据范例。
更高等的言语,比方C++能够定义本身的数据范例和数据范例的算法,类的重载操纵符就是一个例子。