
函數語言程式設計 - 資料型別
資料型別定義了物件可以具有的值型別以及可以對其執行的操作。在使用資料型別之前,應先宣告它。不同的程式語言支援不同的資料型別。例如:
- C語言支援char、int、float、long等。
- Python支援字串、列表、元組等。
廣義上講,資料型別分為三種:
基本資料型別 - 這些是程式設計師直接使用的預定義資料型別,用於根據需要儲存單個值,例如整數型別、字元型別或浮點型別。例如 - int、char、float 等。
派生資料型別 - 這些資料型別是使用內建資料型別派生的,由程式設計師設計用於根據需要儲存相同型別多個值。例如 - 陣列、指標、函式、列表等。
使用者自定義資料型別 - 這些資料型別是使用內建資料型別派生的,它們被封裝成單個數據型別,用於根據需要儲存相同型別、不同型別或同時儲存這兩種型別的多個值。例如 - 類、結構體等。
C++支援的資料型別
下表列出了C++支援的資料型別:
資料型別 | 大小 | 範圍 |
---|---|---|
char | 1 位元組 | -128 到 127 或 0 到 255 |
unsigned char | 1 位元組 | 0 到 255 |
signed char | 1 位元組 | -128 到 127 |
int | 4 位元組 | -2147483648 到 2147483647 |
unsigned int | 4 位元組 | 0 到 4294967295 |
signed int | 4 位元組 | -2147483648 到 2147483647 |
short int | 2 位元組 | -32768 到 32767 |
unsigned short int | 2 位元組 | 0 到 65,535 |
signed short int | 2 位元組 | -32768 到 32767 |
long int | 4 位元組 | -2,147,483,648 到 2,147,483,647 |
signed long int | 4 位元組 | -2,147,483,648 到 2,147,483,647 |
unsigned long int | 4 位元組 | 0 到 4,294,967,295 |
float | 4 位元組 | +/- 3.4e +/- 38 (~7 位) |
double | 8 位元組 | +/- 1.7e +/- 308 (~15 位) |
long double | 8 位元組 | +/- 1.7e +/- 308 (~15 位) |
Java支援的資料型別
Java支援以下資料型別:
資料型別 | 大小 | 範圍 |
---|---|---|
byte | 1 位元組 | -128 到 127 |
char | 1 位元組 | -128 到 127 |
short | 1 位元組 | -32,768 到 32,767 |
int | 2 位元組 | -2,147,483,648 到 2,147,483,647 |
long | 8 位元組 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
float | 2 位元組 | -2147483648 到 2147483647 |
double | 8 位元組 | +9.223*1018 |
Boolean | 1 位 | True 或 False |
Erlang支援的資料型別
在本節中,我們將討論Erlang(一種函數語言程式設計語言)支援的資料型別。
數字
Erlang支援兩種型別的數字文字,即整數和浮點數。請看下面的例子,它展示瞭如何新增兩個整數值:
-module(helloworld). -export([start/0]). start() -> io:fwrite("~w",[5+4]).
它將產生以下輸出:
9
原子
原子是一個其值不能更改的字串。它必須以小寫字母開頭,可以包含任何字母數字字元和特殊字元。當原子包含特殊字元時,應將其用單引號(')括起來。請看下面的例子以更好地理解。
-module(helloworld). -export([start/0]). start()-> io:fwrite(monday).
它將產生以下輸出:
monday
注意 - 嘗試將原子更改為以大寫“M”開頭的“Monday”。程式將產生錯誤。
Boolean
此資料型別用於將結果顯示為true或false。請看下面的例子。它展示瞭如何比較兩個整數。
-module(helloworld). -export([start/0]). start() -> io:fwrite(5 =< 9).
它將產生以下輸出:
true
位串
位串用於儲存未型別化記憶體區域。請看下面的例子。它展示瞭如何將位串的2位轉換為列表。
-module(helloworld). -export([start/0]). start() -> Bin2 = <<15,25>>, P = binary_to_list(Bin2), io:fwrite("~w",[P]).
它將產生以下輸出:
[15,25]
元組
元組是一個複合資料型別,具有固定數量的項。元組的每一項稱為元素。元素的數量就是元組的大小。下面的例子展示瞭如何定義一個包含5個項的元組並列印其大小。
-module(helloworld). -export([start/0]). start() -> K = {abc,50,pqr,60,{xyz,75}} , io:fwrite("~w",[tuple_size(K)]).
它將產生以下輸出:
5
對映
對映是一個複合資料型別,具有可變數量的鍵值關聯。對映中的每個鍵值關聯稱為關聯對。對的鍵和值部分稱為元素。關聯對的數量即為對映的大小。下面的例子展示瞭如何定義一個包含3個對映的對映並列印其大小。
-module(helloworld). -export([start/0]). start() -> Map1 = #{name => 'abc',age => 40, gender => 'M'}, io:fwrite("~w",[map_size(Map1)]).
它將產生以下輸出:
3
列表
列表是一個複合資料型別,具有可變數量的項。列表中的每一項稱為元素。元素的數量即為列表的長度。下面的例子展示瞭如何定義一個包含5個項的列表並列印其大小。
-module(helloworld). -export([start/0]). start() -> List1 = [10,15,20,25,30] , io:fwrite("~w",[length(List1)]).
它將產生以下輸出:
5
注意 - Erlang中沒有定義'字串'資料型別。