为什么编程语言的都要定义数据类型

我们都知道声明变量时,需要在内存中为该变量开辟空间。
不同的数据类型占用的内存空间是不同的,如int占用4字节,char占用2字节(java中),指定数据类型是为了给不同的数据类型分配不同的内存空间,既能适当地存储该变量的值,又不会浪费内存空间。

实际上还有其他原因,可以一句话概括为:数据类型是面向编译器的,决定编译器对相应类型的处理方式。
以如下C++代码进行说明:

1
2
3
4
5
6
7
8
int a=100;
int b=200;

double a1=10.1;
double b1=10.2;

a=a+b;
a1=a1+b1;

这段代码非常简单,定义了四个数据,两种类型。
a=a+b;a1=a1+b1; 这两条语句几乎一样,但在计算机中使用了不同的处理器:整数使用普通的CPU,而浮点数必须使用浮点运算器。所以,这两句话,产生的机器代码完全不同!

那么编译器碰到如上代码时如何知道使用哪一种机器指令呢,此时定义数据类型的意义就凸显出来了:编译器就会检查进行加法操作的两个加数的数据类型,根据他们的数据类型,来确定到底使用哪一个运算器的机器代码。

再次总结:数据类型的背后,隐藏的是编译器或者解释器对数据处理方式的定义。