Menu

Основные типы

D предоставляет ряд основных типов, которые всегда имеют одинаковый размер, независимо от платформы. Единственным исключением является тип real, который предоставляет максимально возможную точность для чисел с плавающей точкой. Также нет разницы в размере целого числа независимо от того, было приложение скомпилировано для 32-битных или 64-битных систем.

bool 8 бит
byte, ubyte, char 8 бит
short, ushort, wchar 16 бит
int, uint, dchar 32 бита
long, ulong 64 бита

Типы с плавающей точкой:

float 32 бита
double 64 бита
real Зависит от платформы, 80 бит на 32-битной Intel x86

Префикс u обозначает unsigned (беззнаковые) типы. char означает UTF-8 символы, wchar используется для UTF-16 строк и dchar для UTF-32 строк.

Преобразование между переменными разных типов разрешается компилятором только если не будет потери точности. При этом преобразование между числами с плавающей точкой (например, double в float) допускается.

Преобразование в другой тип может быть выполнено принудительно с помощью выражения cast(<ТИП>) <переменная>.

Специальное ключевое слово auto создаёт переменную и выводит её тип из правой части выражения. В выражении auto var = 7 переменной var будет присвоен тип int. Обратите внимание, что тип по-прежнему определяется на этапе компиляции и не может быть изменён, так же как и у переменной с явно указанным типом.

Свойства типов

У всех типов есть свойство .init, которым они инициализируются. Для всех целочисленных типов это 0, а для типов с плавающей точкой это NaN (not a number, "не число").

У целочисленных типов и типов с плавающей точкой есть свойство .max, показывающее наибольшее значение, которое может быть представлено этим типом. Целочисленные типы также обладают свойством .min, показывающим, какое наименьшее значение может быть представлено. У типов с плавающей точкой вместо этого есть свойство min_normal, которое указывает на наименьшее нормальное значение, не равное нулю. У типов с плавающей точкой есть также свойства .nan (NaN-значение), .infinity (бесконечное значение), .dig (количество десятичных знаков, задающих точность), .mant_dig (число бит мантиссы) и другие.

У каждого типа есть свойство .stringof, с помощью которого можно получить имя типа в виде строки.

Индексы в D

В D индексы обычно имеют алиас тип size_t, так как он достаточно большой, чтобы представить смещение во всей адресуемой памяти - uint для 32-битной и ulong для 64-битной архитектур.

Подробнее

Основные ссылки

Дополнительные ссылки

rdmd playground.d