* T1 и T2 эквивалентны
* T1 и T2 принадлежат к целым типам
* T1 и T2 принадлежат к вещественным типам
* Один из типов - поддиапазон другого или оба - поддиапазоны некоторого типа
* T1 и T2 - множества с совместимыми базовыми типами
Говорят, что значение типа T2 можно присвоить переменной типа T1 или тип T2 совместим по присваиванию с типом T1, если выполняется одно из следующих условий:
* T1 и T2 совместимы
* T1 - вещественного типа, T2 - целого
* T1 - строкового типа, T2 - символьного
* T1 - pointer, T2 - типизированный указатель
* T1 - указатель или процедурная переменная, T2=nil
* T1 - процедурная переменная, T2 - имя процедуры или функции с соответствующим списком параметров
* T1, T2 - классовые типы, один из них - наследник другого. Поскольку в PascalABC.NET все типы кроме указателей являются потомками типа Object, то значение любого типа (кроме указателей) можно присвоить переменной типа Object
* T1 - тип интерфейса, T2 - тип класса, реализующего этот интерфейс
Если тип T2 совместим по присваиванию с типом T1, то говорят также, что тип T2 неявно приводится к типу T1.
Отображение на типы .NET
Стандартные типы PascalABC.NET реализуются типами библиотеки классов .NET. Далее приводится таблица соответствий стандартных типов PascalABC.NET и типов .NET.
Тип PascalABC.NET | Тип .NET |
int64 | System.Int64 |
uint64 | System.UInt64 |
integer, longint | System.Int32 |
longword, cardinal | System.UInt32 |
BigInteger | System.BigInteger |
smallint | System.Int16 |
word | System.UInt16 |
shortint | System.SByte |
byte | System.Byte |
boolean | System.Boolean |
real | System.Double |
double | System.Double |
char | System.Char |
string | System.String |
object | System.Object |
arrayof T | T[] |
record | struct |
Выражения и операции
Выражения и операции: обзор
Выражение - это конструкция, возвращающая значение некоторого типа. Простыми выражениями являются переменные и константы, например:
3.14
x
Более сложные выражения строятся из простых с помощью операций, вызовов функций и скобок. Данные, к которым применяются операции, называются операндами.
В PascalABC.NET имеются следующие операции: @, not, ^, *, /, div, mod, and, shl, shr, +, -, or, xor, =, >, <, <>, <=, >=, as, is, in, =>, а также операция new и операция приведения типа.
Операции @, -, +, ^, not, операция приведения типа и операция new являются унарными (имеют один операнд), остальные являются бинарными (имеют два операнда), операции + и - являются и бинарными и унарными.
Порядок выполенения операций определяется их приоритетом. В языке PascalABC.NET четыре уровня приоритетов операций, задаваемых таблицей приоритетов.
Для типов, определенных пользователем, ряд операций можно перегружать.
* Арифметические операции
* Логические операции
* Операции сравнения
* Строковые операции
* Побитовые операции
* Операции с множествами
* Операция явного приведения типов
* Операции is и as
* Операция new
* Операция @ получения адреса
* Операции с указателями
* Операции typeof и sizeof
Арифметические операции
К арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции