Ціль має строгу статичну типизацію. Більшість вбудованих типів мають аналоги в С.
Ціль не дозволяє виконувати операції з різними типами чи типами різних розмірів. До прикладу, в Цілі не
можна просто додати ц32
та ц64
(як int
та long
в С).
змінна а: ц32 = 2; змінна б: ц64 = 3; змінна в = а + б; // помилка компіляції
Автоматичного приведення типів не буде, а тому необхідно вручну перетворити одне зі значень.
змінна а: ц32 = 2; змінна б: ц64 = 3; змінна в = ц64(а) + б; // в буде ц64
ціле
ц64
ц32
ц16
ц8
натуральне
н64
н32
н16
н8
р32
р64
логічне
невідома_адреса
адреса<Т>
невідома_памʼять
памʼять<Т>
() -> Т
т8
ю8
ціле
містить значення цілого числа розміром залежно від системи (ssize_t
в C).
змінна а: ціле = 10;
ц64
містить значення цілого числа розміром 64 біт (int64_t
в C).
змінна а: ц64 = 10;
ц32
містить значення цілого числа розміром 32 біт (int32_t
в C).
змінна а: ц32 = 10;
ц16
містить значення цілого числа розміром 16 біт (int16_t
в C).
змінна а: ц16 = 10;
ц8
містить значення цілого числа розміром 8 біт (int8_t
в C).
змінна а: ц8 = 10;
натуральне
містить значення натурального числа розміром залежно від системи (size_t
в C).
змінна а: натуральне = 10;
н64
містить значення натурального числа розміром 64 біт (uint64_t
в C).
змінна а: н64 = 10;
н32
містить значення натурального числа розміром 32 біт (uint32_t
в C).
змінна а: н32 = 10;
н16
містить значення натурального числа розміром 16 біт (uint16_t
в C).
змінна а: н16 = 10;
н8
містить значення натурального числа розміром 8 біт (uint8_t
в C).
змінна а: н8 = 10;
р64
містить значення раціонального числа розміром 64 біт (double
в C).
змінна а: р64 = 1.23;
р32
містить значення раціонального числа розміром 32 біт (float
в C).
змінна а: р32 = -3.21;
логічне
містить значення натурального числа розміром 8 біт (bool
в C).
змінна а: логічне = так; змінна б: логічне = ні;
невідома_адреса
містить адресу на значення невідомого типу (void*
в С).
змінна а: невідома_адреса = пусто;
адреса<Т>
містить адресу на значення типу Т
(Т*
в С).
змінна а: ціле = 123; змінна б: адреса<ціле> = а::адреса;
невідома_памʼять
містить адресу на послідовність значень невідомого типу (void*
в С).
змінна а: невідома_памʼять = пусто;
памʼять<Т>
містить адресу на послідовність значень типу Т
(Т*
в С).
змінна а: ціле = 123; змінна б: памʼять<ціле> = а::адреса як памʼять<ціле>;
() -> Т
містить адресу на дію (Т (*)()
в С).
дія сума(а: ціле, б: ціле): ціле { вернути а + б; } //... змінна д: (ціле, ціле) -> ціле = сума;
т8
містить текстове значення (КД з 8-бітним кодуванням).
змінна а: т8 = "привіт";
Структура т8
:
структура т8 { розмір: натуральне; дані: памʼять<п8>; }
ю8
містить UTF-8 значення.
змінна а: ю8 = ю8"привіт";
Структура ю8
:
структура ю8 { розмір: натуральне; дані: памʼять<п8>; }