爲何編程語言的都要定義數據類型

對於一個程序員來說,寫代碼的第一件是請,恐怕就是須要定義一些數據類型。而程序自己,就是對這些數據類型進行操做,有沒有人思考過,爲何每種語言編寫的程序,開始都須要定義數據類型呢?程序員

如下面的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

相關文章
相關標籤/搜索