Читаем Описание языка PascalABC.NET полностью

То есть, если операнды - целые, то результатом является самый короткий целый тип, требуемый для представления всех получаемых значений.

При выполнении бинарной операции с uint64 и знаковым целым результирующим типом будет uint64, при этом может произойти переполнение, не вызывающее исключения.

Для операции / данная таблица исправляется следующим образом: результат деления любого целого на целое имеет тип real.

Для операций div и mod выполняются эти же правила, но операнды могут быть только целыми. Правила вычисления операций div и mod - следующие:

x div y - результат целочисленного деления x на y. Точнее, x div y = x / y, округленное до ближайшего целого по направлению к 0;

x mod y - остаток от целочисленного деления x на y. Точнее, x mod y = x - (x div y) * y.

Унарная арифметическая операция + для любого целого типа возвращает этот тип. Унарная арифметическая операция - возвращает для целых типов, меньших или равных integer, значение типа integer, для longword и int64 - значение типа int64, к uint64 унарная операция - не применима, для типов single и real - соответственно типы single и real. То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.

Логические операции

К логическим относятся бинарные операции 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 не вычисляется;

в выражении x or y если x истинно, то все выражение истинно, и y не вычисляется.

Побитовые операции

К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shr результирующий тип совпадает с типом левого операнда, для not - с типом операнда.

Побитовые операции осуществляются следующим образом: с каждым битом (0 принимается за False, 1 - за True) производится соответствующая логическая операция. Например:

00010101 and 00011001 = 00010001

00010101 or 00011001 = 00011101

00010101 xor 00011001 = 00001100

not 00010101 = 11101010

(операнды и результат представлены в двоичной форме).

Операциии shl и shr имеют вид:

a shl n

a shr n

где n - целое положительное число, a - целое число.

a shl n представляет собой целое положительное, полученное из двоичного представления числа a сдвигом влево на n позиций. Добавляемые справа позиции заполняются нулями.

a shr n представляет собой целое положительное, полученное из двоичного представления числа a сдвигом вправо на n позиций.

Например:

3 shl 2 = 12

12 shr 2 = 3

поскольку 3=112, после сдвига влево на 2 позиции 112 преобразуется в 11002=12, а 12=11002 после сдвига вправо на 2 позиции преобразуется в 112=3.

Операции сравнения

Операции сравнения <, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам простого типа и к строкам.

Операции = и <> также применяются ко всем типам. Для размерных типов по умолчанию сравниваются значения, для ссылочных типов - ссылки. Можно переопределить это поведение, перегрузив операции = и <>. Аналогично можно перегрузить все операции сравнения для типов записей и классов, вводимых пользователем.


Строковые операции

Перейти на страницу:

Похожие книги

Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных