Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Отображение на типы . Net. Тип pascalabc. Net. Тип. Net. Record. Арифметические операции. Shortint. Smallint. Integer. Longword. Single. Shortint. Smallint. Integer. Longword. Single. Логические операции. Побитовые операции. Операции сравнения. СтроковыеСодержание книги
Поиск на нашем сайте
Отображение на типы .NET Стандартные типы PascalABC.NET реализуются типами библиотеки классов .NET. Далее приводится таблица соответствий стандартных типов PascalABC.NET и типов .NET.
Тип PascalABC.NET Тип .NET int64 System.Int64 uint64 System.UInt64 integer, longint System.Int32 longword, cardinal System.UInt32 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 of T T[] record struct Арифметические операции К арифметическим относятся бинарные операции +, -, *, /, +=, -=, *=, /= для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Тип выражения x op y, где op - знак бинарной операции +, - или *, определяется из следующей таблицы:
shortint byte smallint word integer longword int64 uint64 single real shortint integer integer integer integer integer int64 int64 uint64 single real byte integer integer integer integer integer longword int64 uint64 single real smallint integer integer integer integer integer int64 int64 uint64 single real word integer integer integer integer integer longword int64 uint64 single real integer integer integer integer integer integer int64 int64 uint64 single real longword int64 longword int64 longword int64 longword uint64 uint64 single real int64 int64 int64 int64 int64 int64 uint64 int64 uint64 single real uint64 uint64 uint64 uint64 uint64 uint64 uint64 uint64 uint64 single real single single single single single single single single single single real real real real real real real real real real real real То есть, если операнды - целые, то результатом является самый короткий целый тип, требуемый для представления всех получаемых значений. При выполнении бинарной операции с uint64 и знаковым целым результирующим типом будет uint64, при этом может произойти переполнение, не вызывающее исключения. Для операции / данная таблица исправляется следующим образом: результат деления любого целого на целое имеет тип real. Для операций div и mod выполняются эти же правила, но операнды могут быть только целыми. Правила вычисления операций div и mod - следующие: x div y - результат целочисленного деления x на y. Точнее, x div y = x / y, округленное до ближайшего целого по направлению к 0; Унарная арифметическая операция + для любого целого типа возвращает этот тип. Унарная арифметическая операция - возвращает для целых типов, меньших или равных integer, значение типа integer, для longword и int64 - значение типа int64, к uint64 унарная операция - не применима, для типов single и real - соответственно типы single и real. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений. Бинарные операции +=, -=, *=, /= не возвращают результат. Они используются в операторах присваивания и имеют следующий смысл: a #= b означает a := a # b, где # - знак операции +, -, *, /. Например: a += 3; // увеличить a на 3 Операция /= неприменима, если левый операнд - целый. Операции +=, -=, *=, /= могут также использоваться со свойствами классов соответствующих типов в левой части. Логические операции К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. эти операции подчиняются стандартным правилам логики: a and b истинно только тогда, когда истинны a и b, a or b истинно только тогда, когда истинно либо a, либо b, a xor b истинно только тогда, когда только одно из a и b истинно, not a истинно только тогда, когда a ложно. Выражения с and и or вычисляются по короткой схеме: в выражении x and y если x ложно, то все выражение ложно, и y не вычисляется; Побитовые операции К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shr результирующий тип совпадает с типом левого операнда, для not - с типом операнда. Побитовые операции осуществляются следующим образом: с каждым битом (0 принимается за False, 1 - за True) производится соответствующая логическая операция. Например: 00010101 and 00011001 = 00010001 (операнды и результат представлены в двоичной форме). Операции сравнения Операции сравнения <, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам простого типа. Операции = и <> также применяются ко всем типам (!). Для размерных типов по умолчанию сравниваются значения, для ссылочных типов - адреса. Можно переопределить это поведение, перегрузив операции = и <>. Аналогично можно перегрузить все операции сравнения для типов записей и классов, вводимых пользователем. Строковые операции К строкам применимы все операции сравнения <, >, <=, >=, =, <>. Кроме этого, к строкам и символам применима операция конкатенации (слияния) +, ее результат имеет строковый тип. Например, 'a'+'b'='ab'. К строкам также применима операция +=: s += s1; означает s := s + s1; Операции с указателями Ко всем указателям применимы операции сравнения = и <>. К типизированным указателям применима операция разыменования ^: если p является указателем на тип T, то p^ - элемент типа T, на который указывает p. Указатели pointer разыменовывать нельзя. Операции с множествами К множествам с базовыми элементами одного типа применимы операции + (объединение), - (разность) и * (пересечение), а также +=, -= и *=: var s1,s2,s: set of byte; К множествам с базовыми элементами одного типа применимы также операции сравнения = (равенство), <> (неравенство), <= (нестрого вложено), < (строго вложено), >= (нестрого содержит) и > (строго содержит): [1..3] = [1,2,3] Но неверно, что [1..5] < [1..5]. Наконец, операция in определяет, принадлежит ли элемент множеству: 3 in [2..5] - верно, 1 in [2..5] неверно. Операция @ Операция @ применяется к переменной и возвращает ее адрес. Тип результата представляет собой типизированный указатель на тип переменной. Например: var Операции is и as Операция is предназначена для проверки того, имеет ли классовая переменная указанный динамический тип. Операция as позволяет безопасно преобразовать переменную одного классового типа к другому классовому типу (в отличие от явного приведения классового типа). Операция is имеет вид: a is ClassType и возвращает True если a принадлежит к классу ClassType или одному из его потомков. Например, если Base и Derived - классы, причем, Derived - потомок Base, переменные b и d имеют соответственно типы Base и Derived, то выражения b is Base и d is Base возвращают True, а b is Derived - False. Операция as имеет вид: a as ClassType и возвращает ссылку на объект типа ClassType если преобразование возможно, в противном случае возвращает nil. Например, в программе type var b: Base; begin первый раз выводится False, второй - True. Операции is и as используются для работы с переменной базового класса, содержащей объект производного класса. 1 способ. if b is Derived then 2 способ. var d: Derived := b as Derived; Операция new Операция new имеет вид: new ИмяКласса(ПараметрыКонструктора) Она вызывает конструктор класса ИмяКласса и возвращает созданный объект. Например: type var m: My := new My(5); Эквивалентным способом создания объекта является вызов конструктора в стиле Object Pacal: var m: My := My.Create(5); Создание объекта класса при инициализации переменной проще проводить, используя автоопределение типа: var m := new My(5); Операции typeof и sizeof Операция sizeof(имя типа) возвращает для этого типа его размер в байтах. Операция typeof(имя типа) возвращает для этого типа объект класса System.Type. Приведем пример использования typeof: type var b: Base := new Derived; begin Приоритет операций Приоритет определяет порядок выполнения операций в выражении. Первыми выполняются операции, имеющие высший приоритет. Операции, имеющие одинаковый приоритет, выполняются слева направо. @, not, ^, +, - (унарные), new 1 (наивысший) *, /, div, mod, and, shl, shr, as +, - (бинарные), or, xor =, <>, <, >, <=, >=, in, is, +=, -=, *=, /= 4 (низший) Для изменения порядка выполнения операций в выражениях используются скобки.
|
||||
Последнее изменение этой страницы: 2024-06-27; просмотров: 2; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.174.204 (0.007 с.) |