Типы данных


Предыдущая страница
Следующая страница  

В языке программирования 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

Тип void указывает, что значение не доступно. Он используется в двух ситуациях:

Номер Типы и описание
1

Функция, возвращающая void

В D возможны различные функции, которые не возвращают значение, или вы можете сказать, что они возвращают void. Функция без возвращаемого значения имеет тип возвраемого значения void. Например, void exit (int status);

2

Аргументы функции как void

В D возможны различные функции, которые не принимают никаких параметров. Функция без параметров может быть объявлена, как принимающая void. Например, int rand(void);

На данный момент тип void может быть вам не понятен, поэтому давайте продолжим, и рассмотрим эту концепцию в следующих главах.


Предыдущая страница
Следующая страница