Базовi типи данних

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 залежно вiд платформи, 80 бiт на Intel x86-32

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

Перетворення між змінними різних типів допускається компілятором лише якщо немає втрати точностi. Хоча конверсія між плаваючими типами (наприклад double у float) допускається.

Перетворення в інший тип може бути примусовим при використаннi виразу cast(<ТИП>) <змінна>. Перетворення необхідно використовувати з великою обережністю, оскiльки виразу cast дозволено порушувати систему типів.

Спеціальне ключове слово auto створює змінну і виводить її тип з правої частини виразу. Наприклад, auto MyVar = 7 виведе тип int для myVar. Зверніть увагу, що тип буде визначено під час компіляції і він не може бути змінений пiзнiше - так само, як з будь-якою іншою змінною з явно заданим типом.

Властивостi типiв

Всі типи даних мають властивість .init - значення, яким вони iнiціалізуються. Для всіх цілих чисел це "0", для типiв з плаваючою точкою це NaN (not a number, Не число).

Цілі типи та типи з плаваючою точкою мають властивість .max, яка повертає найбільше значення, яке вони можуть містити. Цілі типи також мають властивість .min для найменшого значення, яке вони можуть містити, у той час, як типи з плаваючою точкою мають властивість .min_normal, яка визначається найменшим представимим нормованним значенням, не рівне 0.

Типи з плаваючою точкою також мають властивість .NaN (NaN-значення), .infinity (значення нескінченності), .dig (точнiсть у кількостi десяткових цифр), .mant_dig (кількість бітів у мантисі) і багато інших.

Кожен тип також має властивість .stringof, яка повертає його назву у вигляді рядка.

Iндекси у D

У D індекси мають зазвичай тип псевдоніма (Alias) size_t, так як це є досить великий тип, щоб представляти зміщення в усій адресній пам'яті - тобто uint для 32-розрядних і ulong для 64-розрядних архітектур.

Asserts

assert є вбудований у компілятор вираз, який перевіряє умови у режимі налагодження (Debug) і завершує роботу з AssertionError, якщо умова не виконується.

Детальнiше

Основнi посилання

Додаткові посилання

rdmd playground.d