摘要:對于一個程序員來講,寫代碼的第一件是請,恐怕就是需要定義一些數據類型。更高級的語言,例如可以定義自己的數據類型和數據類型的算法,類的重載操作符就是一個例子。
對于一個程序員來講,寫代碼的第一件是請,恐怕就是需要定義一些數據類型。而程序本身,就是對這些數據類型進行操作,有沒有人思考過,為什么每種語言編寫的程序,開始都需要定義數據類型呢?
以下面的C代碼為例,我們來說明這個問題:
#includeint 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++可以定義自己的數據類型和數據類型的算法,類的重載操作符就是一個例子。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/102063.html
摘要:平時在復習基礎知識時,經常會遇到數據類型基礎數據類型內置對象包裝類型對象,檢測數據類型時,用到的值,感覺都差不多,但是又有差異。值與數據類型關系對比下圖,即可知值相較于基礎數據類型少多 平時在復習JS基礎知識時,經常會遇到JS數據類型、基礎數據類型、內置對象、包裝類型對象,檢測數據類型時,用到的typeof值,感覺都差不多,但是又有差異。今天特地整理下,方便理解。 JS數據類型 基礎數...
摘要:知識點閉包問題執行機制定時器線程理解構造函數內的方法與構造函數屬性上方法的對比中都經歷了什么深入理解中的屬性和特性中的方法詳解為什么編程語言的都要定義數據類型中與的區別輕松理解基本包裝對象中數據類型內置對象包裝類型對象關系基礎之數組中的邏輯 JS知識點 JS hoist JS閉包問題 JS執行機制 JS定時器線程理解 構造函數內的方法與構造函數prototype屬性上方法的對比 JS...
摘要:一旦有一方改變,要及時通知對方,否則就會出現問題。對于,主要處理高性能的傳輸,以及網絡的錯誤和異常。這個框架是在協議中使用的。就是網絡文件系統。唯一標識請求和回復。 【前五篇】系列文章傳送門: 網絡協議 14 - 流媒體協議:要說愛你不容易 網絡協議 15 - P2P 協議:小種子大學問 網絡協議 16 - DNS 協議:網絡世界的地址簿 網絡協議 17 - HTTPDNS:私人定制...
摘要:一旦有一方改變,要及時通知對方,否則就會出現問題。對于,主要處理高性能的傳輸,以及網絡的錯誤和異常。這個框架是在協議中使用的。就是網絡文件系統。唯一標識請求和回復。 【前五篇】系列文章傳送門: 網絡協議 14 - 流媒體協議:要說愛你不容易 網絡協議 15 - P2P 協議:小種子大學問 網絡協議 16 - DNS 協議:網絡世界的地址簿 網絡協議 17 - HTTPDNS:私人定制...
閱讀 2419·2021-10-14 09:43
閱讀 2447·2021-09-09 09:34
閱讀 1609·2019-08-30 12:57
閱讀 1209·2019-08-29 14:16
閱讀 730·2019-08-26 12:13
閱讀 3210·2019-08-26 11:45
閱讀 2296·2019-08-23 16:18
閱讀 2673·2019-08-23 15:27