В языке программирования D типы данных относятся к обширной системе, используемой для объявления переменных или функций различных типов. Тип переменной определяет, сколько места занимает она в хранилище и как интерпретируется хранимый битовый шаблон.
Типы в D можно классифицировать следующим образом:
Номер | Типы и описания |
---|---|
1 | Базовые типы Они являются арифметическими типами и состоят из трех видов: (a) целые, (b) с плавающей точкой, и (c) символы. |
2 | Перечислимые типы Это снова арифметические типы. Они используются для определения переменных, которым можно присвоить только отдельные определённые целочисленные значения во всей программе. |
3 | Тип void Описатель типа void указывает, что значение не доступно. |
4 | Производные типы Они включают (a) типы указателей, (b) типы массивов, (c) типы структур, (d) типы объединений и (e) типы функций. |
Типы массивов и типы структур в совокупности называются агрегатными типами. Тип функции определяет тип возвращаемого значения функции. Мы увидим базовые типы в нижеследующих подразделах, в то время как остальные типы будут рассмотрены в следующих главах.
В следующей таблице приведён список стандартных целочисленных типов с размерами занимаемой ими памяти и диапазонами значений:
Тип | Размер | Диапазон значений |
---|---|---|
bool | 1 байт | false или true |
byte | 1 байт | от -128 до 127 |
ubyte | 1 байт | от 0 до 255 |
int | 4 байта | от -2,147,483,648 до 2,147,483,647 |
uint | 4 байта | от 0 до 4,294,967,295 |
short | 2 байта | от -32,768 до 32,767 |
ushort | 2 байта | от 0 до 65,535 |
long | 8 байт | от -9223372036854775808 до 9223372036854775807 |
ulong | 8 байт | от 0 до 18446744073709551615 |
Чтобы получить точный размер типа или переменной, вы можете использовать оператор sizeof. type.(sizeof) дает размер памяти, занимаемой объектом или типом в байтах. Следующий пример получает размер типа int на любой машине:
import std.stdio; int main() { writeln("Размер в байтах: ", ulong.sizeof); return 0; }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Размер в байтах: 8
В следующей таблице приведены стандартные типы с плавающей точкой с их размерами занимаемой памяти, диапазонами значений и назначением:
Тип | Размер | Диапазон значений | Назначение |
---|---|---|---|
float | 4 байта | от 1.17549e-38 до 3.40282e+38 | 6 знаков после запятой |
double | 8 байт | от 2.22507e-308 до 1.79769e+308 | 15 знаков после запятой |
real | 10 байт | от 3.3621e-4932 до 1.18973e+4932 | Либо самый большой тип с плавающей точкой, поддерживаемый аппаратным обеспечением, либо double; В зависимости от того, что больше |
ifloat | 4 байта | от 1.17549e-38i до 3.40282e+38i | тип мнимого float |
idouble | 8 байт | от 2.22507e-308i до 1.79769e+308i | тип мнимого double |
ireal | 10 байт | от 3.3621e-4932 до 1.18973e+4932 | тип мнимого real |
cfloat | 8 байт | от 1.17549e-38+1.17549e-38i до 3.40282e+38+3.40282e+38i | комплексное число, составленное из двух float |
cdouble | 16 байт | от 2.22507e-308+2.22507e-308i до 1.79769e+308+1.79769e+308i | комплексное число, составленное из двух double |
creal | 20 байт | от 3.3621e-4932+3.3621e-4932i до 1.18973e+4932+1.18973e+4932i | комплексное число, составленное из двух real |
Следующий пример выводит количество памяти, занимаемое типом float:
import std.stdio; int main() { writeln("Размер в байтах: ", float.sizeof); return 0; }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Размер в байтах: 4
В следующей таблице перечислены стандартные типы символов с их размерами занимаемой памяти и назначением.
Тип | Размер | Назначение |
---|---|---|
char | 1 байт | кодовый блок UTF-8 |
wchar | 2 байта | кодовый блок UTF-16 |
dchar | 4 байта | кодовый блок UTF-32 и кодовая точка Unicode |
В следующем примере выводится размер памяти, занимаемый типом char.
import std.stdio; int main() { writeln("Размер в байтах: ", char.sizeof); return 0; }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Размер в байтах: 1
Тип void указывает, что значение не доступно. Он используется в двух ситуациях:
Номер | Типы и описание |
---|---|
1 | Функция, возвращающая void В D возможны различные функции, которые не возвращают значение, или вы можете сказать, что они возвращают void. Функция без возвращаемого значения имеет тип возвраемого значения void. Например, void exit (int status); |
2 | Аргументы функции как void В D возможны различные функции, которые не принимают никаких параметров. Функция без параметров может быть объявлена, как принимающая void. Например, int rand(void); |
На данный момент тип void может быть вам не понятен, поэтому давайте продолжим, и рассмотрим эту концепцию в следующих главах.