我们都知道声明变量时,需要在内存中为该变量开辟空间。
不同的数据类型占用的内存空间是不同的,如int占用4字节,char占用2字节(java中),指定数据类型是为了给不同的数据类型分配不同的内存空间,既能适当地存储该变量的值,又不会浪费内存空间。
实际上还有其他原因,可以一句话概括为:数据类型是面向编译器的,决定编译器对相应类型的处理方式。
以如下C++代码进行说明:
1 | int a=100; |
这段代码非常简单,定义了四个数据,两种类型。
a=a+b; 和 a1=a1+b1; 这两条语句几乎一样,但在计算机中使用了不同的处理器:整数使用普通的CPU,而浮点数必须使用浮点运算器。所以,这两句话,产生的机器代码完全不同!
那么编译器碰到如上代码时如何知道使用哪一种机器指令呢,此时定义数据类型的意义就凸显出来了:编译器就会检查进行加法操作的两个加数的数据类型,根据他们的数据类型,来确定到底使用哪一个运算器的机器代码。
再次总结:数据类型的背后,隐藏的是编译器或者解释器对数据处理方式的定义。