📅  最后修改于: 2021-01-07 05:17:36             🧑  作者: Mango
数据类型定义对象可以具有的值的类型以及可以对其执行哪些操作。数据类型在使用之前应先声明。不同的编程语言支持不同的数据类型。例如,
从广义上讲,存在三种类型的数据类型:
基本数据类型-这些是预定义的数据类型,程序员可以直接使用这些数据类型按要求仅存储一个值,即整数类型,字符类型或浮点类型。例如-int,char,float等。
派生数据类型-这些数据类型使用内置数据类型派生,该数据类型由程序员设计为根据需要存储相同类型的多个值。例如-数组,指针,函数,列表等。
用户定义的数据类型-这些数据类型是使用内置数据类型派生的,这些数据类型包装为单个数据类型,以根据需要存储相同或不同类型或两者的多个值。例如-类,结构等。
下表列出了C++支持的数据类型-
Data Type | Size | Range |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 4 bytes | -2147483648 to 2147483647 |
unsigned int | 4 bytes | 0 to 4294967295 |
signed int | 4 bytes | -2147483648 to 2147483647 |
short int | 2 bytes | -32768 to 32767 |
unsigned short int | 2 bytes | 0 to 65,535 |
signed short int | 2 bytes | -32768 to 32767 |
long int | 4 bytes | -2,147,483,648 to 2,147,483,647 |
signed long int | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long int | 4 bytes | 0 to 4,294,967,295 |
float | 4 bytes | +/- 3.4e +/- 38 (~7 digits) |
double | 8 bytes | +/- 1.7e +/- 308 (~15 digits) |
long double | 8 bytes | +/- 1.7e +/- 308 (~15 digits) |
Java支持以下数据类型-
Data Type | Size | Range |
---|---|---|
byte | 1 byte | -128 to 127 |
char | 2 byte | 0 to 65,536 |
short | 2 byte | -32,7688 to 32,767 |
int | 4 byte | -2,147,483,648 to 2,147,483,647 |
long | 8 byte | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
float | 4 byte | -2147483648 to 2147483647 |
double | 8 byte | +9.223*1018 |
Boolean | 1 bit | True or False |
在本节中,我们将讨论Erlang支持的数据类型,Erlang是一种功能编程语言。
Erlang支持两种类型的数字字面量,即integer和float 。看下面的示例,该示例显示如何将两个整数值相加-
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("~w",[5+4]).
它将产生以下输出-
9
原子是不能更改其值的字符串。它必须以小写字母开头,并且可以包含任何字母数字字符和特殊字符。当原子包含特殊字符,应将其括在单引号(’)中。请看以下示例,以更好地理解。
-module(helloworld).
-export([start/0]).
start()->
io:fwrite(monday).
它将产生以下输出-
monday
注-尝试使用大写“ M”将原子更改为“星期一”。程序将产生错误。
此数据类型用于将结果显示为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中未定义’String’数据类型。