3

对于一个程序员来讲,写代码的第一件是请,恐怕就是需要定义一些数据类型。而程序本身,就是对这些数据类型进行操作,有没有人思考过,为什么每种语言编写的程序,开始都需要定义数据类型呢?

以下面的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++可以定义自己的数据类型和数据类型的算法,类的重载操作符就是一个例子。


前端熟练工
1.8k 声望66 粉丝

要做前端架构师的正在前行的人