Update page '1.1. Система типов'
parent
8abe87191c
commit
0d859c5512
@ -1,4 +1,4 @@
|
||||
## Cтруктура типов
|
||||
## Система типов
|
||||
|
||||
В проекте используются различные между собой (в первую очередь, с точки зрения управления памятью) 10 системных целочисленных типов:
|
||||
|
||||
@ -28,5 +28,19 @@
|
||||
- **[vtype_set](https://gogs.lirent.ru/lirent/libcdsb/wiki/2.5.+vtype_set)**
|
||||
- **[vtype_dict](https://gogs.lirent.ru/lirent/libcdsb/wiki/2.2.+vtype_dict)**
|
||||
|
||||
Каждому из вышеперечисленных типов, соотвествует константа, установленная в рамках перечисления **vtype**, которая, в свою очередь определяет поведение ряда контейнеров (ячеек внутри контейнеров) или должна обрабатываться пользователськом коде, для однозначного определения типа поступивших данных.
|
||||
Каждому из вышеперечисленных типов, соотвествует константа, установленная в рамках перечисления **vtype**, которая, в свою очередь, определяет поведение ряда контейнеров (ячеек внутри контейнеров), а также должна обрабатываться пользователським кодом, для однозначного определения типа поступивших данных.
|
||||
|
||||
Деталью, требующей дополнительного упоминания, является принцип сравнения системных числовых типов, что является важным аспектом при поиске значений, внутри контейнеров. Так,
|
||||
|
||||
`(vtype_bool)1 == (vtype_int64)1`
|
||||
`(vtype_pointer)0x00007777 == (vtype_uint16)0x7777`
|
||||
`(vtype_float)0.25 == (vtype_ldouble)0.25`
|
||||
`(vtype_double)13.0 == (vtype_int32)13`
|
||||
|
||||
но
|
||||
|
||||
`(vtype_int8)-1 != (vtype_uint8)0xff`
|
||||
|
||||
Иными словами, сравнение всегда производится на базе реального значения числа, а не на базе представления данного числа в памяти.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user