* 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.
Стандартные типы 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
|
array ofT
|
T[]
|
record
|
struct
|
Выражения и операции: обзор
Выражение - это конструкция, возвращающая значение некоторого типа. Простыми выражениями являются переменные и константы, например:
3.14
x
Более сложные выражения строятся из простых с помощью операций, вызовов функций и скобок. Данные, к которым применяются операции, называются операндами .
В PascalABC.NETимеются следующие операции: @, not, ^, *, /, div, mod, and, shl, shr, +, -, or, xor, =, >, <, <>, <=, >=, as, is, in, =>, а также операция new и операция приведения типа.
Операции @, -, +, ^, not, операция приведения типа и операция new являются унарными (имеют один операнд), остальные являются бинарными (имеют два операнда), операции + и - являются и бинарными и унарными.
Порядок выполенения операций определяется их приоритетом. В языке PascalABC.NET четыре уровня приоритетов операций, задаваемых таблицей приоритетов.
Для типов, определенных пользователем, ряд операций можно перегружать.
Справка по операциям PascalABC.NET
* Арифметические операции
* Логические операции
* Операции сравнения
* Строковые операции
* Побитовые операции
* Операции с множествами
* Операция явного приведения типов
* Операции is и as
* Операция new
* Операция @ получения адреса
* Операции с указателями
* Операции typeof и sizeof
К арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции divи modдля целых чисел и унарные операции + и - для вещественных и целых чисел. Тип выражения x op y, где op - знак бинарной операции +, - или *, определяется из следующей таблицы:
|
shortint
|
byte
|
smallint
|
word
|
integer
|
longword
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
shortint
|
integer
|
integer
|
integer
|
integer
|
integer
|
int64
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
byte
|
integer
|
integer
|
integer
|
integer
|
integer
|
longword
|
int64
|
uint64
|
BigInteger
|
single
|
real
|
smallint
|
integer
|
Читать дальше