對於一個程序員來說,寫代碼的第一件是請,恐怕就是須要定義一些數據類型。而程序自己,就是對這些數據類型進行操做,有沒有人思考過,爲何每種語言編寫的程序,開始都須要定義數據類型呢?程序員
如下面的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的機器指令?此時,編譯器就會檢查進行加法操做的兩個加數的數據類型,根據他們的數據類型,來肯定到底使用哪個運算器的機器代碼
。此時,數據類型定義的意義就凸顯出來了。code
總結:get
經過上述簡單的描述,咱們就可以清楚,任何編程語言(除了彙編,彙編只規定數據的字長),都會有本身的數據類型,數據類型背後,隱藏的是編譯器或者解釋器對數據處理方式的定義
。知道了這個之後,咱們在定義數據類型的時候,就應該知道,咱們定義的這種數據類型,能夠進行哪些操做,這些操做的規則是什麼,這樣咱們纔算真正掌握了這個數據類型。編譯器
更高級的語言,例如C++能夠定義本身的數據類型和數據類型的算法,類的重載操做符就是一個例子。io