跳轉到內容

計算機程式設計/型別

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


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

型別定義

[編輯 | 編輯原始碼]

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

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

基本型別

[編輯 | 編輯原始碼]

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

整數
在某些語言中是無限的,在大多數語言中限制為 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) 來解釋所有組合。
一些特殊字型使用類似的系統。
一些條形碼使用類似的概念。
日期時間和持續時間
這些是用於支援日期數學的特殊資料型別,例如計算兩個日期之間的天數。
標誌或指示器
它們包含值,如真/假或是/否。它們通常用於識別鍵盤功能的使用(哪些特殊鍵被按下);印表機狀態(準備好了新頁面);檔案訪問(我們獲得了我們正在尋找的記錄,我們現在位於檔案末尾)。這些特殊條件意味著需要特殊操作。
可變長度
資料的寬度由內容控制。

語言特性

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