Язык программирования Форт



         

Глава 7. Операторы сравнения и ветвления - часть 3


Обратимся теперь к операторам сравнения; слово = (равно) - только одно из нескольких предусмотренных в языке Форт. Имеются также операторы сравнения для одинарных чисел и чисел двойной длины со знаком и без знака. В табл. 7.1 приводится сводка этих операторов. Большинство из приведенных операторов в комментариях не нуждаются. Некоторые особенности имеют операторы U< (и по аналогии DU

Операторы U< и UD< применяются для сравнения больших чисел, чтобы они не рассматривались как отрицательные. Как и для арифметических операций, при использовании чисел без знака требуется некоторая осмотрительность.

Особого внимания заслуживает оператор 0=. Он всегда меняет результат сравнения на обратный. каким образом, число, не равное нулю, превратится в 0, в то время как 0 превратится в 1 (или в -1 Форт-83). Для повышения удобочитаемости программ в Форт-79 слово 0= имеет стандартный синоним NOT (не), который действует аналогичным образом. (В Форт-83 оператор NOT действует по другому, как было описано в гл. 3.) Если целью сравнения является выяснение того, действительно ли в стеке находится нуль, то более оправдано применение оператора 0=, в то время как оператор NOT уместнее, если целью является изменение значения истинности на обратное. Заметим, что, если в Форте нет слова <>, его можно заменить конструкцией = NOT или = 0=. Точно так же оператор - (минус) будет возвращать значение 0 или не 0, как оператор <>. Запомните, что операторы сравнения снимают числа из стека. Поэтому, если вам потребуются эти числа для дальнейшей работы, их необходимо скопировать в стеке. Обычно это делается с помощью операций OVER OVER или 2DUP.

Таблица 7.1. Операторы сравнения *

Имя Операнды Определено ли Результат (возвращаемое значение) слова в стеке стандартом?

= n1 n2 да истина, если n1 = n2 <> n1 n2 нет истина, если n1=/=n2 < n1 n2 да истина, если n1 < n2 > n1 n2 да истина, если n1 > n2 = n1 n2 да истина, если n1 >= n2 0= n да истина, если n = 0 0< n да истина, если n < 0 0> n да истина, если n > 0 D= d1 d2 да истина, если d1 = d2 D< d1 d2 да истина, если d1 < d2 D0= d да истина, если d = 0 U< u1 u2 да истина, если u1 < u2 DU< ud1 ud2 да истина, если ud1=ud2 * Нестандартные слова включены в MMFORTH.




Содержание  Назад  Вперед