跳轉到內容

計算機程式設計/型別

來自華夏公益教科書,開放的書籍,開放的世界


計算機程式設計型別 確定了給定程式設計環境中值型別以及使用方式。在大多數情況下,程式語言定義了一組基本資料型別,例如用於數字、字元或字串。在高階語言中,通常可以從現有資料型別定義新的資料型別,例如表示郵政地址(由街道和城市字串以及郵政編碼整陣列成)。當在不同的程式和計算機系統之間通訊資料時,重要的是使用雙方都能識別的型別,或者有在它們之間轉換的方法。

型別定義

[編輯 | 編輯原始碼]

資料型別的完整定義包括最多三件事

物理表示
資料是如何儲存的
操作
你可以用資料型別做什麼(含義);你不能做什麼,例如除以零或字串操作;以及如果你“溢位”緩衝區執行操作,導致結果“超出”分配的空間時會發生什麼
自動函式
哪些活動,在程式控制之外,可以改變資料(硬體、使用者、系統時鐘)

基本型別

[編輯 | 編輯原始碼]

在一些程式語言中可以看到一些基本資料型別

整數
在某些語言中是無限的,在大多數語言中限制為 8 位、16 位、32 位、48 位、64 位大小 (CC++C#w:DDSJavaw:RPG)。在某些語言中 (Adaw:FORTHPL/I),大小可以自由定義。
比率
例如 2/3,只有少數語言有這些。
浮點數
浮點數,大多數語言提供單精度和雙精度 (CC++C#DDSJavaw:RPG)。在某些語言中 (AdaPL/I),精度可以自由定義。
十進位制
十進位制(人類)定點數,通常用於貨幣值。只有少數語言 (AdaPL/Iw:SQLCOBOLw:RPGDDS) 提供定點數。精度通常可以自由定義。
十六進位制
十六進位制,在 IBM 系統上可用。數字為零到 F。大多數現代語言不需要單獨的十六進位制型別,它們使用整數和專門的 I/O 例程。
壓縮十進位制
兩個數字可以容納在一個字元相同的空間內。檢視 w:ASCIIw:EBCDIC 或類似概念系統的字元集定義。請注意,字母和特殊字元由兩個十六進位制半位元組表示,因此使用壓縮資料,兩個數字可以容納在一個字母相同的空間內。通常,一個半位元組保留用於數字符號(加號或減號)。
複數
複數值通常由兩個浮點陣列成。只有少數語言 (C99Fortran) 有這些。在面向物件的語言中,通常由庫實現 (C++Ada)
字元
一個字元,通常為 8、16 或 32 位大小。一些字元集,如 UTF-8,是用於可變長度。

複合型別

[編輯 | 編輯原始碼]
記錄
各種基本型別的組合。
變體
型別在執行時確定。
物件
在面向物件的語言中。
陣列
參見文章 陣列
字串
一系列字元。通常實現為字元陣列。

型別屬性

[編輯 | 編輯原始碼]
空值支援
除了資料空白或零之外,我們還可以有空值,這意味著我們還不知道那裡應該是什麼。
DBCS 雙位元組字元集
一些國家和文化的“字母表”(如漢語、日語、韓語、俄語(西裡爾字母))可以使用稱為表意的圖形字元來執行類似於西方國家語言中 A 到 Z 字母在構建含義方面的作用,除了每個表意字比每個 A 到 Z 字母都包含更多含義。資料型別可用於儲存這些圖形字元集,這些字元集包含比傳統西方字元集中 256 種組合所能表示的更多符號,因此存在雙位元組字元集 (DBCS) 來解釋每種組合。
一些特殊字型使用類似的系統。
一些條形碼使用類似的概念。
日期時間和持續時間
這些是用於支援日期數學的特殊資料型別,例如計算兩個日期之間的天數。
標誌或指示器
它們包含真/假或是/否之類的值。它們通常用於識別鍵盤功能的使用(哪些特殊鍵被按下);印表機狀態(準備列印新頁面);檔案訪問(我們獲得了我們正在查詢的記錄,我們現在位於檔案結尾)。這些特殊條件意味著需要採取特殊行動。
可變長度
資料的寬度由內容控制。

語言特性

[編輯 | 編輯原始碼]
華夏公益教科書